Остановить против перерыва в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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