Назад к вопросам
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;
}