Tengo un programa C++ en Linux (CentOS 5.3) generando múltiples hilos que están en un ciclo infinito para realizar un trabajo y dormir durante ciertos minutos. Ahora tengo que cancelar los hilos en ejecución en caso de que entre una nueva notificación de configuración y empiece de nuevo el nuevo conjunto de hilos, para lo cual he usado pthread_cancel. Lo que observé fue que los hilos no se detenían incluso después de recibir la indicación de cancelación, incluso algunos subprocesos estaban apareciendo después de que se había completado la suspensión.Cancelando un hilo usando pthread_cancel: buena práctica o malo
Como no se deseaba el comportamiento, el uso de pthread_cancel en el escenario mencionado genera dudas sobre si se trata de una práctica buena o mala.
Comente el uso de pthread_cancel en el escenario mencionado anteriormente.
+1 para evitar la cancelación, es la manera más rápida hacia fugas de memoria y cosas peores. Pregunte educadamente en su lugar :) –
Parece que tengo que cambiar la lógica para la terminación del hilo usando un indicador compartido. Pero en otra nota, mi programa tenía hilos con el estado de cancelar configurado en ASINCRONOS, que, creo, está relacionado con la terminación inmediata de los hilos después de llamar a los respectivos manejadores de limpieza. – Mandar
@ user584631: la página de manual de pthreads dice que cuando el modo está configurado como asíncrono, la cancelación puede ser inmediata, pero el sistema no está obligado a hacerlo. –