Программисты больше не нужны!
Нужны ИИ инженеры! Хотите научиться? Вступайте в канал!
772 of 824 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить