Остановить против перерыва в Parallel.ForC#

Место общения программистов C#
Anonymous
Остановить против перерыва в Parallel.For

Сообщение Anonymous »

Мне трудно понять циклыlooState.Stop() иloopState.Break(). Я прочитал MSDN и несколько сообщений об этом, но я все еще в замешательстве.

Я понимаю, что каждый итерационный секционировщик дает оставшиеся индексы для потоков для обработки, а циклoState.Stop() останавливает все потоки, а loopState.Break() останавливает текущий поток.

Однако давайте рассмотрим следующую ситуацию:

Код: Выделить всё

Parallel.For(0, 100, (i, loopState) =>
{
if (i >= 10)
loopState.Break();
Debug.Write(i);
});
Для этого цикла у меня есть следующий результат:

Код: Выделить всё

0 25 1 2 3 4 5 6 7 8 9 10
Понятия не имею, почему в результате 10 и 25 чисел.

Кто-нибудь может помочь?

P.S. У меня процессор i5 520M (2 ядра => 4 потока)

Подробнее здесь: https://stackoverflow.com/questions/162 ... rallel-for

Вернуться в «C#»