Назад к вопросам
Junior
104
questionbank

Для чего предназначена функция thread::join() в C++?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Функция thread::join() блокирует вызывающий поток до тех пор, пока поток, связанный с объектом thread, не завершит свое выполнение.

Основные назначения:

  • Синхронизация: Обеспечивает, что определенный набор операций в другом потоке будет завершен перед продолжением выполнения текущего потока.
  • Избежание ресурсоутечек (joinable threads): Объект std::thread, представляющий выполняющийся поток (не отсоединенный — joinable), должен быть либо присоединен (join), либо отсоединен (detach) перед тем, как объект std::thread будет разрушен. Отсутствие этого приведет к вызову std::terminate.

Пример:

#include <iostream>
#include <thread>
#include <vector>

void worker_function() {
    // Выполнение некоторой задачи
    std::cout << "Worker thread finished.\n";
}

int main() {
    std::thread worker(worker_function);

    // Главный поток продолжает выполнение...
    std::cout << "Main thread is waiting for worker thread...\n";

    // Блокировка главного потока до завершения рабочего потока
    worker.join();

    std::cout << "Worker thread joined. Main thread continues.\n";

    return 0;
}