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 condition is met?
if (integerArray[i] == 68)
break;
Thanks.
If you want to stop after the current executing iteration are done (but iterations before the current WILL be executed - that is, the iterations with a lower index = i)
Parallel.For(0, 100, (i, s) =>
{
s.Break();
});
or if you want to stop after the current and interations before this (in terms of index = i) should also stop
Parallel.For(0, 100, (i, s) =>
{
s.Stop();
});
but in BOTH cases it is good practice to check if the work should be aborted if the iteration can take a while
s.ShouldExitCurrentIteration
read more here Parallel.For Method (Int32, Int32, Action(Int32, ParallelLoopState))
It sounds to me that you should look into PLINQ (Parallel LINQ) to execute a parallel query, rather than a parallel for.
http://msdn.microsoft.com/en-us/library/dd460688.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With