
Disparo por eventos
Publicado por Jorge (31 intervenciones) el 24/01/2016 14:39:52
Hola a todos:
Me gustaría saber si es posible la rutina de un programa se quede bloqueada hasta que sea disparada por un evento de otro hilo del proceso ó por otro proceso ?
Cuando busco en internet información acerca de este veo que hay muchas referencias y documentación relacionada con la función read de un socket, pero yo en mi proceso no tengo sockets.
En concreto lo que quiero hacer son dos cosas:
- Una rutina se quede esperando hasta que en un directorio aparezca un fichero.
- Un proceso "A" se quede esperando hasta que un proceso "B" ejecute una determinada funcion y envíe una orden al proceso "A" para que este continúe.
Hasta ahora lo que si se hacer es que la rutina del proceso "A" se quede en un bucle infinito y en cada pasada de este compruebe el directorio y una posicion de la memoria compartida por la que ahora se comunican el proceso "A" y "B". El problema es que esto consume muchos recursos si las pasadas del bucle son demasiado seguidas ó de lo contrario si entre pasada y pasada pongo un sleep, puedo llegar a tardar demasiado tiempo en detectar el evento del proceso "B"
¿ Es posible hacer esta "comunicación" entre procesos de la forma que propongo ?
¿ Como se hace ?
Muchas gracias de antemano por su ayuda
Un saludo
Me gustaría saber si es posible la rutina de un programa se quede bloqueada hasta que sea disparada por un evento de otro hilo del proceso ó por otro proceso ?
Cuando busco en internet información acerca de este veo que hay muchas referencias y documentación relacionada con la función read de un socket, pero yo en mi proceso no tengo sockets.
En concreto lo que quiero hacer son dos cosas:
- Una rutina se quede esperando hasta que en un directorio aparezca un fichero.
- Un proceso "A" se quede esperando hasta que un proceso "B" ejecute una determinada funcion y envíe una orden al proceso "A" para que este continúe.
Hasta ahora lo que si se hacer es que la rutina del proceso "A" se quede en un bucle infinito y en cada pasada de este compruebe el directorio y una posicion de la memoria compartida por la que ahora se comunican el proceso "A" y "B". El problema es que esto consume muchos recursos si las pasadas del bucle son demasiado seguidas ó de lo contrario si entre pasada y pasada pongo un sleep, puedo llegar a tardar demasiado tiempo en detectar el evento del proceso "B"
¿ Es posible hacer esta "comunicación" entre procesos de la forma que propongo ?
¿ Como se hace ?
Muchas gracias de antemano por su ayuda
Un saludo
Valora esta pregunta


0