Предположим, у вас есть массив из 1000 случайных целых чисел, и вам нужно перебрать его, чтобы найти число 68, например.
Использование нового Parallel.For на четырехъядерном процессоре значительно улучшило бы скорость, заставив каждое ядро работать только с 250 элементами массива.
Вопрос: возможно ли прервать цикл Parallel.For при выполнении следующего условия?
if (integerArray[i] == 68)
break;
Спасибо.
Если вы хотите остановить текущую выполняющуюся итерацию (но итерации перед выполнением текущего БУДЕТ - то есть итерации с более низким индексом = i)
Parallel.For(0, 100, (i, s) =>
{
s.Break();
});
или, если вы хотите остановиться после текущего и взаимодействий до этого (с точки зрения индекса = i), также должны останавливаться
Parallel.For(0, 100, (i, s) =>
{
s.Stop();
});
, но в ОБЕИХ случаях рекомендуется проверить, следует ли прерывать работу, если итерация может занять некоторое время
s.ShouldExitCurrentIteration
подробнее здесь Метод Parallel.For (Int32, Int32, Action (Int32, ParallelLoopState))
Мне кажется, вы должны изучить PLINQ (Parallel LINQ), чтобы выполнить параллельный запрос, а не параллельный для.
http://msdn.microsoft.com/en-us/library/dd460688.aspx