parallel-extensions

Can I remove items from a ConcurrentDictionary from within an enumeration loop of that dictionary?

So for example: ConcurrentDictionary<string,Payload> itemCache = GetItems(); foreach(KeyValuePair<string,Payload> kvPair in itemCache) { if(TestItemExpiry(kvPair.Value)) { // Remove expired item. Payload removedItem; itemCache.TryRemove(kvPair.Key, out removedItem); } } Obviously with an ordinary Diction...

Reasons for Parallel Extensions working slowly

I am trying to make my calculating application faster by using Parallel Extensions. I am new in it, so I have just replaced the main foreach loop with Parallel.ForEach. But calculating became more slow. What can be common reasons for decreasing performance of parallel extensions? Thanks ...

Parallel.Invoke the same method for a list of objects

I have a class MyClass with a method MyMethod. For every MyClass instance in a list of MyClass instances i want to invoke MyMethod and have them run in a separate thread. I am using .NET 4.0 and the Parallel extensions. ...

Using Parallel Extensions with ThreadStatic attribute. Could it leak memory?

I'm using Parallel Extensions fairly heavily and I've just now encountered a case where using thread local storage might be sensible to allow re-use of objects by worker threads. As such I was looking at the ThreadStatic attribute which marks a static field/variable as having a unique value per thread. It seems to me that it would be un...

How to call Parallel.ForEach with a multidimensional array

I'm having a little trouble figuring out how to call the Parallel.ForEach with a 2D array of strings: string[,] board = new string[,]{ {"A", "B", "C", "D", "E" }, {"F", "G", "H", "I", "J"}, {"K", "L", "M", "N", "O"}, {"0", "1", "2", "3", "4"}}; Parallel.ForEach(board, row => { for (int i = 0;...

Choosing minimum among minima using Parallel.ForEach

I am new to C#, Parallel.ForEach, and .NET in general. I want to parallelize a search that involves thousands of locations. For each location, I compute great circle distance. That is a calculation I want to spread to different cores. My question is how do I do this if I only have one thread-local variable, as in this MSDN TPL exampl...

Unit testing concurrent software - what do you do?

As software gets more and more concurrent, how do you handle testing the core behaviour of the type with your unit tests (not the parallel behaviour, just the core behaviour)? In the good old days, you had a type, you called it, and you checked either what it returned and/or what other things it called. Nowadays, you call a method and ...

(Fluent) Nhibernate lazy loading and affects on Parallel.ForEach

I have several entities configured via FNH to eager load child entities using the FetchMode.Eager syntax when I request instances (from the database). Now I was under the impression this would ignore any lazy loading in the mapping and populate the child entities with the 'real' data. The reason why I want to do this is because I want t...

any special reference needed for c# 4.0 Parallel.For ?

I am following this article: http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx and in my console app Parallel namespace is visible, but "Parallel.For" fails compilation with "type of namespace For does not exist in namespace 'Parallel'". I've scoured the net, but not seei...

Parallel.For interruption

Suppose you have an array of 1000 random integer numbers and you need to loop over it to find the number 68 for example. Using the new Parallel.For on a quad core CPU would improve speed considerably, making each core to work only 250 array items. The question is: is it possible to interrupt the Parallel.For loop when the following con...

Good Learning Material on Parallel Extension of .Net 4

Can anybody please suggest me some good learning materials on the new Parallel Extensions and its use in .Net 4 except the MSDN one, so that I can learn - parallel programming on .Net 4 the basic differences between non-parallel and parallel programming paradigms how to create data-structures that supports parallel computation? Any f...

How efficient is this parallelisation code? Is there a better way to do it?

I'm building a large Lucene index and each document I insert requires a little bit of "putting together" before it can be inserted. I'm reading all of the documents from a database and inserting them into the index. Lucene allows you to build a few different indexes and merge them together later, so I've come up with this: // we'll use ...

Slow Parallel.For interruption

I have the following code inside a bigger loop, after profiling my code I discovered that all the Parallel.For gain in execution speed is lost in the long time the Stop() method takes to complete. Is there any way to improve this? Maybe calling Thread.Sleep()? Thanks. Parallel.For(0, 1000, (i, loopState) => { if (a == b) lo...

Can Parallel.ForEach be used safely with CloudTableQuery

I have a reasonable number of records in an Azure Table that I'm attempting to do some one time data encryption on. I thought that I could speed things up by using a Parallel.ForEach. Also because there are more than 1K records and I don't want to mess around with continuation tokens myself I'm using a CloudTableQuery to get my enumera...

Using .Net Parallel Extensions (Parallel.Invoke) for multiple asynchronous calls?

Currently I have a section of code that needs to make about 7 web service calls to various providers for data. Each call takes a several seconds to execute, so I would like to run them in parallel to speed things up. I have wrapped my 7 calls in a Parallel.Invoke which works great at running a couple things at the same time, but on a 2 ...

Concurrent acess to EF4 entities (Parallel + EF4)

I'm currently working in a dispatcher service that processes thousands of messages delivered in different channels (email, private message, application message) using EF4 and WCF. To try to speed up message dispatching i'm trying to use Parallels: Parallel.ForEach(currentMessageList, m => { Processors.DispatcherWrapper.Dispatch(m, m.un...

c# parallelize simulation

Hi I have a simulation engine that I would like to parallelize first and later develop as a web service in C#. This is an intensive simulation that requires a lot of CPU and RAM and I would like to split each run on a separate thread. To give you a better idea the simulation can run 100 runs and for each run I collect some results. It w...

Azure Table Storage Performance from Massively Parallel Threaded Reading

Short version: Can we read from dozens or hundreds of table partitions in a multi-threaded manner to increase performance by orders of magnitude? Long version: We're working on a system that is storing millions of rows in Azure table storage. We partition the data into small partitions, each one containing about 500 records, which repre...

Task Parallel Library - How do you get a Continuation with TaskContinuationOptions.OnlyOnCanceled to Fire?

I'm experimenting with the Task support in .NET 4.0 - specifically with the continuation support. What I'm perplexed about is that I can't figure out how to get a continuation with the TaskContinuationOptions.OnlyOnCanceled flag set to execute. If I do a ThrowIfCancellationRequested in my worker routine, it only seems to propagate out ...

Progress update in Parallel.For() loops

As you can guess the index of the Parallel.For() loop jumps from one value to the other. How can I estimate the amount of the work done? Thanks. ...