2011-09-01 22 views
7

This question ile ilişkili olarak.Konu genelinde istisna yayılımı?

C++ 11, bir özel durumu farklı bir konuya (std::exception_ptr kullanarak) marshall etme ve yayılma özelliğini sürdürme özelliğini ekler.

Böyle bir yayılımın otomatik olup olmadığını merak ettim, yani: bir iş parçacığında bir özel durumu ele almazsam, otomatik olarak ana iş parçacığında mı yayılır?

Biraz şüpheliyim (ya da bir şekilde join için açık bir şekilde beklemek zorunda kalacaktım), fakat henüz C++ 11 konusunda bilgili değilim. Özellikle, std::future durumunda, istisnayı otomatik olarak kaydedebileceğini düşünüyorum.

cevap

8

Yayılma, thread ile otomatik değil. Bir iş parçacığı atarsa ​​ve bu özel durum yakalanmazsa, program ne olursa olsun sona erer.

future ve shared_future, çocuk iş parçacığında yakalanmamış bir istisna kaydedecektir. Bu istisna get çağrıldığında otomatik olarak yayılır.