Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Выполнить функцию, по завершении 3-х потоков

#c_sharp #многопоточность


Подскажите, пожалуйста, такой вопрос:

Есть три потока (Thread) и есть функция А, которая должна выполниться только после
того, как все три потока отработали. В принципе, можно проверять в каждом потоке, по
завершении, выполнились ли остальные, и тогда запускать функцию А или нет. Мне такой
вариант кажется громоздким. Как можно еще запустить функцию А только после того, как
все три потока отработали?
    


Ответы

Ответ 1



Метод Thread.Join останавливает выполнение вызывающего потока, пока вызванный поток не прекратит работу. Например, так: class Program { static void Main(string[] args) { var t1 = new Thread(DoSomething1); var t2 = new Thread(DoSomething2); var t3 = new Thread(DoSomething3); t1.Start(); t2.Start(); t3.Start(); t1.Join(); t2.Join(); t3.Join(); A(); } private static void DoSomething1() { // do something 1 } private static void DoSomething2() { // do something 2 } private static void DoSomething3() { // do something 3 } private static void A() { // do A; } }

Комментариев нет:

Отправить комментарий