Блокировать текущий поток до тех пор пока выполняются одновременно несколько остальных - 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());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д