C ++, ¿es set_terminate local para cada hilo?
Deberíaset_terminate
/get_terminate
¿Configurar un procesador de excepciones de terminación diferente para varios subprocesos en C ++ 2011 o C ++ 2003?
P.ej. Si tengo programa y configuro el controlador de terminación parafunc_1
; Entonces comienzo 3 hilos. ¿Qué son los manejadores de terminación en nuevos hilos? ¿Qué pasa si en cada hilo estableceré el controlador de terminación afunc_2
en el primer hilo,func_3
en el segundo hilo y así sucesivamente.
N3242 (C ++ borrador 2011) no dice nada al respecto en[handler.functions]
o en[support.exception]
/[exception.terminate]
PD: puede responder por C ++ 2011 o por C ++ 2003 o por cualquier implementación popular de estos estándares
PPS: Hay un comentario de FCD para esto ...C ++ FCD Estado del comentario Rev. 5 N3249 (2011):
GB 71 18.6.2.4 / 18.8.2.2 / 18.8.3.2
La seguridad del hilo destd::set_new_handler()
, std::set_unexpected()
, std::set_terminate()
, no se especifica, lo que hace que las funciones sean imposibles de usar de una manera segura para subprocesos.
Se deben especificar las garantías de seguridad de subprocesos para las funciones y se deben proporcionar nuevas interfaces para que sea posible consultar e instalar manejadores de una manera segura para subprocesos.
LWG1365 ACEPTADO con MODIFICACIONES
Ver papelN3189