2011-09-01 16 views
7

En relación con This question.¿Propagación de excepción en subprocesos?

C++ 11 agrega la capacidad de ordenar una excepción a un subproceso diferente (usando std::exception_ptr) y reanuda su propagación.

Me preguntaba si una de propagación tal era automático, es decir: si fracaso para manejar una excepción en un hilo, se propagó de forma automática en el hilo de los padres?

Lo dudo un poco (o tendría que esperar explícitamente para el join de alguna manera), pero todavía no soy conocedor de C++ 11. Notablemente, creo que en el caso de un std::future, podría almacenar la excepción automáticamente.

Respuesta

8

Propagación no es automática con thread. Si se lanza un hilo, y esa excepción no se detecta, el programa termina sin importar qué.

future y shared_future almacenará una excepción no detectada en el hilo secundario. Esa excepción se propaga automáticamente cuando se llama al get.

Cuestiones relacionadas