Отсоединение потока в C++
Метод detach отвязывает поток от объекта
std::thread: объект больше нельзя join,
а выполнение продолжается в фоне.
Чтобы main не завершилась раньше фоновой
работы, поток поднимет флаг в std::atomic<bool>,
а главный цикл дождется истинного значения:
#include <atomic>
#include <iostream>
#include <thread>
int main() {
std::atomic<bool> finished{false};
std::thread worker([&finished]() {
std::cout << "bg\n";
finished.store(true);
});
worker.detach();
while (!finished.load()) {
}
return 0;
}
Отсоедините поток, который записывает 1 в std::atomic<int>. Главный поток ждет, пока значение станет 1.