РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
763 of 815 menu

Метод join

Метод join класса thread блокирует текущий поток (обычно главный) до тех пор, пока поток, для которого вызван метод, не завершит свое выполнение. Метод не принимает параметров и не возвращает значения. После успешного вызова join поток становится не присоединяемым, то есть повторный вызов join или detach для него приведет к ошибке. Если поток не был запущен или уже был присоединен или отсоединен, вызов join приводит к исключению std::system_error.

Синтаксис

thread.join()

Пример

Давайте создадим поток, который выведет сообщение, и дождемся его завершения с помощью метода join:

#include <iostream> #include <thread> using namespace std; void printMessage() { cout << "Hello from thread!" << endl; } int main() { thread t(printMessage); t.join(); cout << "Main thread finished" << endl; return 0; }

Результат выполнения кода:

"Hello from thread!" "Main thread finished"

Пример

Давайте создадим два потока и дождемся завершения каждого из них по очереди:

#include <iostream> #include <thread> using namespace std; void printA() { cout << "Thread A" << endl; } void printB() { cout << "Thread B" << endl; } int main() { thread t1(printA); thread t2(printB); t1.join(); t2.join(); cout << "All threads finished" << endl; return 0; }

Результат выполнения кода:

"Thread A" "Thread B" "All threads finished"

Пример

Давайте проверим, можно ли присоединить поток перед вызовом join с помощью метода joinable:

#include <iostream> #include <thread> using namespace std; void worker() { cout << "Worker running" << endl; } int main() { thread t(worker); if (t.joinable()) { t.join(); } cout << "Joinable after join: " << t.joinable() << endl; return 0; }

Результат выполнения кода:

"Worker running" "Joinable after join: 0"

Смотрите также

  • класс thread,
    который представляет отдельный поток выполнения
  • метод detach,
    который отсоединяет поток от объекта thread
  • метод joinable,
    который проверяет, можно ли присоединить поток
  • метод get_id,
    который возвращает идентификатор потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить