Estos días estoy leyendo el pdf Designing MT programs. Explica que el usuario DEBE llamar explícitamente al detach()
en un objeto de la clase std::thread
en C++ 0x antes de que ese objeto se salga del alcance. Si no lo llama, se llamará al std::terminate()
y la aplicación morirá.destructores de hilos en C++ 0x vs impulso
Normalmente utilizo boost::thread
para enhebrar en C++. Corrígeme si me equivoco pero un objeto boost::thread
se separa automáticamente cuando se sale del alcance.
Me parece que el enfoque de impulso sigue un principio de RAII y el estándar no.
¿Sabes si hay alguna razón particular para esto?
¿Por qué no tener un indicador join_on_destruction o detach_on_destruction en el constructor, o alguna otra forma de especificar explícitamente su comportamiento? – Puppy
Hay un artículo interesante [aquí] (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2008/n2802.html) – icecrime
Hola IceCrime. Gracias por el papel. Así que, básicamente, matar la aplicación es la forma más evidente de mostrar una bandera sobre errores en los hilos ... una manera interesante y realmente "defensiva", diría yo. :) –