Std :: verminate называется из -за неучительного исключения внутри соединенного потокаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std :: verminate называется из -за неучительного исключения внутри соединенного потока

Сообщение Anonymous »

Мне интересно, почему исключения внутри соединения inceed insoke std :: verminate и отдельные потоки не вызывают std :: urlinate .
Рассмотрим, как следить за фрагментом, который запускает std :: verminate . Если мы заменим t2.join () на t2.detach () программа выйдет с 0.
#include
#include

void foo(bool throws) {
if (throws) {
throw std::runtime_error("Asked to throw");
}
}

int main() {
try {
std::thread t1(foo, false);
std::thread t2(foo, true);
t1.join();
t2.join();
}
catch (std::exception const &e) {
std::println("Failed with exception: {}", e.what());
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... ned-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»