Hay varios subprocesos trabajando en una tarea. Una vez que un hilo tiene éxito, se debe cancelar todo el hilo, a medida que se realiza el trabajo. ¿Cómo puedo cancelar los otros hilos una vez que un hilo ha terminado con éxito? ¿Quién llamará al pthread_cancel()
y cómo indicará el hilo exitoso main
o el hilo que lo engendró (valor de retorno?).Cancelar el hilo POSIX después de realizar un trabajo en común
ACTUALIZACIÓN
no quiero llamar simplemente exit
como yo quiero ahora algún tipo de control. Por ejemplo, después de que los hilos se cancelan, procesaré el resultado encontrado por el hilo exitoso y posiblemente haga un poco más de procesamiento, o simplemente quiero mantener el proceso en funcionamiento para un poco más de trabajo.
¿Por qué necesita varios hilos para esta tarea, si va a descartar el trabajo realizado por todos menos uno? Solo haz el trabajo una vez en un hilo. – zwol
decir, tengo una gran lista para buscar linealmente, pasaré segmentos de listas a diferentes hilos, y una vez que encuentre una coincidencia, regresa. otros son cancelados – phoxis
Supongo que tiene sentido en un contexto en el que la búsqueda de fuerza bruta es la única opción, pero si tiene alguna estructura en sus datos, hay mejores algoritmos. – zwol