Pregunta threading.Condition vs threading.Event


Todavía tengo que encontrar una explicación clara de las diferencias entre Condition y Event clases en el threading módulo. ¿Hay un caso de uso claro donde uno sería más útil que el otro? Todos los ejemplos que puedo encontrar utilizan un modelo productor-consumidor como ejemplo, donde queue.Queue sería la solución más directa.


32
2017-09-15 00:29


origen


Respuestas:


En pocas palabras, utiliza una condición cuando los hilos están interesados ​​en esperar que algo se haga realidad, y una vez que sea cierto, para tener acceso exclusivo a algún recurso compartido.

Mientras que usted usa un Evento cuando los hilos solo están interesados ​​en esperar que algo se haga realidad.

En esencia, la condición es un evento + bloqueo abstraído, pero se vuelve más interesante cuando se considera que puede tener varias condiciones diferentes sobre el mismo bloqueo subyacente. Por lo tanto, podría tener diferentes Condiciones que describan el estado del recurso subyacente, lo que significa que puede despertar a los trabajadores que solo están interesados ​​en estados particulares del recurso compartido.


39
2017-09-15 01:11