В C#,Нерестовые рабочие потоки
Как бы один идти о нерест несколько потоков, а затем последовательно добавляя результаты в список, прежде чем вернуться весь результирующий набор?
Каковы некоторые лучшие практики?
Я до сих пор использую ManualResetEvent, чтобы сигнализировать, когда последний элемент обработан потоком.
Но когда он вернётся, мне нужно, чтобы они консолидировали результирующие множества в последовательном порядке, чтобы мы не попадали в конфликтные проблемы с списком возвращаемых значений (итоговые результаты).
Вы по-прежнему будете сталкиваться с конфликтными проблемами, получая ссылку на массив для слота. –
@LB - нет конкуренции, если каждый поток имеет выделенный слот. Сам массив (в отличие от элементов, которые он ссылается) создается до того, как потоки запускаются и уничтожаются впоследствии, и неизменен во время обработки. Элементы создаются потоками, добавляются в массив, а затем используются (после завершения обработки) по «главному» потоку, так что снова нет споров. Очевидно, что в .net 4 есть более эффективные способы ... но OP указывает .net 3.5 –