All about Async/Await, System.Threading.Tasks, System.Collections.Concurrent, System.Linq, and more…
About six months ago, we posted on this blog to ask for details on if/how you're using Parallel Extensions, and we got a great number of awesome responses... thanks!! As that blog post has long since faded into distant memory, we're asking again :)
Are you using Parallel Extensions, the parallelism support introduced with .NET 4? e.g. Parallel loops, Tasks, PLINQ, ConcurrentDictionary<>, ConcurrentQueue<>, Lazy<>, BlockingCollection<>, ManualResetEventSlim, ThreadLocal<T>, and so on? Even if you're using the unsupported .NET 3.5 release of Parallel Extensions, we'd love to hear from you.
Please get in touch by emailing me at stoub at microsoft dot com. What are you building? What functionality are you using? What do you like? What don't you like? What features/additions/changes would you like to see in the future? etc. Any and all feedback is welcome and encouraged.
Really looking forward to hearing from you!
What is the "unsupported .NET 3.5 release of Parallel Extensions" you are referring to? Where can I find further information about this?
The same API surface area for TPL, PLINQ, and our coordination data structures new to .NET 4 are also available in the System.Threading.dll that's in the Reactive Extensions 3.5 SP1 download on DevLabs.
We using Parallel.For, Parallel.Foreach and Plinq for accelerate the current applications fast and with out big cost. For new applications I'm using Task because it's simple and very logical for me. Because I understand how to build my application from independent parts.
ConcurrentDictionary<>, ConcurrentQueue<>, Lazy<> -we understand < but we have no problems for their use.
But I don't understand how to use other features. I read every article from your blog, but did not understand how to use the other features
We use the parallel extensions in all of our latest products. both 3.5 and 4.0. Tasks are probably used the most throughout the code.
The more you work with the library, the harder you start to wonder how you could live without it!
SychevIgor and Wim, thanks for taking the time to respond. Would you mind following up by emailing me at stoub at microsoft dot com? I'd like to understand in more depth how your using the technology.
I thought that it would be worth mentioning that we are using Rx. We started out with considerations to using the TPL but Rx solves all of our concurrency problems. I love the TPL, but I think the Rx has added that extra level of abstraction which effectively negates the need for us to access Task<T>, Lazy<T>, etc.
The real reason we are on Rx is that TPL has not hit Silverlight 3 yet, however many of the features of TPl we get from Rx (some maybe better suited to TPL but we get by).
We would be using it if it was a separate library compatible with .net 2.0.
Thanks, Frank. Good to know.
We use Parallel loops and love it!
Thanks for letting us know. Can you provide more details on how you use it, what benefits you've seen, any issues you've faced, etc.? If you'd feel more comfortable, please feel free to email me directly at stoub at microsoft dot com rather than sharing on the blog. I look forward to hearing from you.
We use the API in a few places so far, since we do an insane amount of processing at many levels... Still looking at ways it may help us. (we have some interesting issues to deal with both back end, distributed and within some real-time UI's).
Thanks for the comment. I'm interested in knowing more about your app and your insane processing ;) as well as the issues you're facing. If you have the time, would you mind getting in touch over email at stoub at microsoft dot com so that I can learn more about it?
Frankly I was not awared Parallel Extensions have been included in .NET 4 ! And I'm looking for all news, I'm a MVP reading all MS blogs... Well, I'm happy to know it now :-) I played with first beta but now I'll look at it deeper cause I'm sure Parallel programming is an absolute need for the future.
How did I miss it was released in .NET 4 ? My fault, certainly, but perhaps a lack of some ad on MS side... You must talk again and everywhere of this new part of .NET 4. Too fewer developers are thinking Parallel programming is important for today and tomorow.. Thanks for your good work !
My primary use of it has been for a generic parsing routine. It breaks down large text documents (English, code, etc) into a very massive datastructure for further processing, and that breaking down is done via PLINQ. Due to the dense nature of the algorithm (it's largely just two, very large PLINQ queries), the parallel tuning has been key to avoid grinding things to a halt or killing memory.