todavía tengo que encontrar una explicación clara de las diferencias entre Condition
y Event
clases en el módulo threading
. ¿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.threading.Condition vs threading.Event
29
A
Respuesta
35
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 utiliza un evento cuando los hilos están interesados sólo en la espera de que algo sea cierto.
En esencia, es una condición abstracta Evento + Lock, pero se vuelve más interesante si tenemos en cuenta que puede tener varias condiciones diferentes en el mismo cerrojo 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.
Cuestiones relacionadas
- 1. Enhebrado de Python: ¿puedo dormir en dos threading.Event() s simultáneamente?
- 2. mejor solución para Python Threading.Event semi-ocupado esperando
- 3. Python threading.Event() - Asegurando que todos los subprocesos en espera se activen en event.set()
- 4. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 5. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
- 6. 'método' vs. 'mensaje' vs. 'función' vs. '???'
- 7. ACE vs Boost vs Poco vs wxWidgets
- 8. VS 2008 vs VS 2008 Express
- 9. Atomikos vs JOTM vs Bitronix vs?
- 10. Acumular vs fold vs reducir vs compress
- 11. .NET vs ASP.NET vs CLR vs ASP
- 12. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - FIABILIDAD
- 13. método vs función vs procedimiento vs clase?
- 14. Rhino simulacro vs Typemock vs JustMock vs
- 15. inline vs __inline vs __inline__ vs __forceinline?
- 16. Exec vs vs ExecWait ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs vs ExecDos ExeCmd
- 17. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, ¿qué tienen en común?
- 18. Crystalspace vs. Irrlicht vs. .....?
- 19. NetSqlAzMan vs AzMan vs (?????)
- 20. SpiderMonkey vs JavaScriptCore vs.
- 21. Django -vs- Grails -vs-?
- 22. Stackpanel: Altura vs ActualHeight vs ExtentHeight vs ViewportHeight vs DesiredSize vs RenderSize
- 23. Mathematica: sin evaluar vs vs Defer Hold vs vs HoldForm HoldAllComplete vs etc, etc
- 24. NSImage vs. CIImage vs. CGImage?
- 25. Bitmap vs ImageView vs Drawable
- 26. DIP vs. DI vs. IoC
- 27. Boo vs C# vs Python?
- 28. DbConnection vs OleDbConnection vs OdbcConnection
- 29. MySQL vs Firebird vs SQLite
- 30. JSF Facelets vs vs JSP
Así que una condición es una abstraída Evento + Lock? –
En esencia, sí ... 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. – donkopotamus
Está 'threading.Condition(). Wait()' ¿espera bloqueada? – overexchange