☠️ Задача на выходные: std::thread, который убивает программу при выходе из функции — 12 июля 2026 г. в 10:53:00.802
☠️ Задача на выходные: std::thread, который убивает программу при выходе из функции Маленькая безобидная функция создаёт std::thread, что-то делает и в конце — terminate() и аварийное завершение всего приложения. Без единого явного throw в коде. void DoWork(bool earlyExitCondition) { std::thread worker([]() { Sleep(2000); std::cout << "Done\n"; }); if (earlyExitCondition) { return; // worker все ещё joinable! } worker.join(); } Задача: объясни, почему деструктор std::thread вызывает std::terminate, если поток всё ещё joinable, и предложи паттерн, который защищает от этого на всех путях выхода из функции, включая исключения.

