/ / Coordinación del subproceso del trabajador y del interruptor en Boost - c ++, boost, boost-thread

Coordinación de hilos de trabajo e interruptores en Boost - c ++, boost, boost-thread

Tipo de C ++ y aún más Boob noobie aquí. He logrado crear dos hilos, basados ​​en esto ejemplo, un trabajador y un interruptor. El último duerme, a través de this_thread :: sleep_for durante 50 segundos e interrumpe al Worker si no se realiza dentro de ese tiempo, con el uso adecuado de while! This_thread :: interruption_requested () y thread :: interrupt (). Así que es un mecanismo de tiempo de espera muy agradable y fácil. ¿Mi problema es cómo detener el Interrupter sleep antes? Quiero decir, si el Worker termina antes de esos 50 segundos, hago un this_thread :: yield o this_thread :: interruption_requested (ambos parecen funcionar) pero El Interruptor aún está dormido y debe esperar 50 segundos para que se despierte :(

¿Hay alguna forma de hacer este mecanismo de tiempo de espera, pero si el trabajo se realiza con su trabajo antes de que termine el sueño, notificar / despertar al Interruptor?

PS: ¿Necesito algún tipo de sincronización cuando todo está terminado?

Respuestas

0 para la respuesta № 1

Su hilo interruptor no debe dormirIncondicionalmente durante 50 segundos, pero espere la variable condicional durante 50 segundos, si el hilo de trabajo finaliza antes, indicará que var son condicionales y que el interruptor se activará. Puedes usar cualquiera std :: conditional_variable o uno de impulso con el mismo nombre