2009-06-24 15 views
7

¿Puede cancelar un Boost Thread como lo haría con un subproceso?Boost Thread Cancelando

Estoy escribiendo un perro guardián simple para terminar subprocesos de trabajo si se cuelgan y no parece haber una manera de simplemente cancelar un hilo en la biblioteca Boost Thread.

Respuesta

10

No son compatibles con cancelar, lo cual es bueno ya que puede causar todo tipo de problemas sutiles.

Eche un vistazo a la sección de documentos que cubre la interrupción de subprocesos y la excepción boost :: thread_interrupted y cree algo que le permita lograr lo que quiere al mismo tiempo que limpia todo.

+0

Parece que la interrupción del hilo de refuerzo no lo ayudará si el hilo se atasca en un bucle, que es una de las cosas que trato de proteger. Mientras renuncio a la portabilidad, empiezo a pensar que lo mejor es usar un manejador de limpieza pthread. –

+3

O coloque un punto (s) de interrupción en algún lugar del circuito (s). No debería ser mucho golpe de rendimiento, especialmente si el hilo ya está funcionando por mucho tiempo. Y el resto de la infraestructura de interrupción ya está en su lugar. – Duck

2

Ellos no son compatibles con la cancelación de la caja (como ha señalado pato), sin embargo, dependiendo del tratamiento que se realice dentro de su hilo (s) trabajador, me gustaría considerar el uso de un boost::condition notificar al hilo que debe terminar (limpiamente) en la primera oportunidad.

Cuestiones relacionadas