Блокировать текущий поток до тех пор пока выполняются одновременно несколько остальных - C#
Формулировка задачи:
Есть кусочек кода
Суть. Создаётся N - количество потоков которые крутят один и тот же метод (В данном случае sc.Compare).
Если для всех потоков выполнить Start всё работает отлично..Но завершается основной поток.
Если добавить метод join в цикле. То на первой итерации блокируется основной поток..И в итоге выходит
что этот кусок кода
работает можно так сказать в однопоточном режиме..ибо получается что на первой итерации блокируется основной поток и цикл не выполняется..Как только завершится первый поток из цикла..Вызывается второй поток.
А мне нужно чтобы все потоки в цикле отработали параллельно..Но при этом чтобы основной поток был заблокирован на время выполнения всех потоков в цикле. Как решить данную проблему?
for (int i = 0; i < str1.Length - 1; i++)
{
int j = i;
threadList.Add(new Thread(new ThreadStart(() => sc.Compare(str1[j], str2[j], j))));
}
foreach (var thr in threadList)
{
thr.Start();
} foreach (var thr in threadList)
{
thr.Start();
thr.Join();
}Решение задачи: «Блокировать текущий поток до тех пор пока выполняются одновременно несколько остальных»
textual
Листинг программы
for (int i = 0; i < str1.Length - 1; i++)
{
int j = i;
threadList.Add(new Thread(new ThreadStart(() => sc.Compare(str1[j], str2[j], j))));
threadList[i].Start();
}
threadList.ForEach(t => t.Join());