2011-09-01 43 views
7

Liên quan đến This question.Tuyên truyền ngoại lệ trên các chủ đề?

C++ 11 thêm khả năng để sắp xếp một ngoại lệ cho một luồng khác nhau (sử dụng std::exception_ptr) và tiếp tục tuyên truyền của nó.

Tôi đã tự hỏi nếu một tuyên truyền như vậy là tự động, đó là: nếu tôi không xử lý một ngoại lệ trong một chủ đề, nó có được tự động truyền trong chuỗi gốc không?

Tôi phần nào nghi ngờ điều đó (hoặc nó sẽ phải chờ một cách rõ ràng cho join theo một cách nào đó), nhưng tôi chưa hiểu rõ về C++ 11. Đáng chú ý, tôi nghĩ rằng trong trường hợp của một std::future, nó có thể lưu trữ các ngoại lệ tự động.

Trả lời

8

Tuyên truyền không tự động với thread. Nếu một chuỗi ném, và ngoại lệ đó không bị bắt, chương trình sẽ chấm dứt bất kể vấn đề gì.

futureshared_future sẽ lưu trữ một ngoại lệ không bắt buộc trong chuỗi con. Ngoại lệ đó sau đó được tự động lan truyền khi get được gọi.

Các vấn đề liên quan