Исключение распространения по потокам? - PullRequest
8 голосов
/ 01 сентября 2011

В связи с Этот вопрос .

C ++ 11 добавляет возможность маршалинга исключения в другие потоки (используя std::exception_ptr) и возобновляет его распространение.

Мне было интересно, было ли такое распространение автоматическим, то есть: если мне не удается обработать исключение в потоке, автоматически ли оно распространяется в родительском потоке?

Я несколько сомневаюсь в этом (или это должно было бы явно подождать join в некотором роде), но я пока не разбираюсь в C ++ 11. Примечательно, что я думаю, что в случае std::future он может автоматически сохранять исключение.

1 Ответ

9 голосов
/ 01 сентября 2011

Распространение не является автоматическим с thread.Если поток завершает работу, и это исключение не перехватывается, программа завершает работу независимо от того, что.

future и shared_future сохранит необработанное исключение в дочернем потоке.Это исключение затем автоматически распространяется при вызове get.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...