Warum brauchen wir Mutex und Events in Windows? In dem Sinn könnte Windows nicht nur Mutex haben? Was kann mit Ereignissen geschehen, die mit Mutex nicht möglich sind?Mutex und Event unter Windows
Antwort
Ereignisse können Threads blockieren, bis ein Ereignis (daher der Name) gesendet wird. Das Blockieren eines Ereignisses bedeutet "Wecke mich, wenn etwas passiert ist"; Sie erwarten, dass Sie schlafen gelegt werden. Event's sind ein Signalisierungsmechanismus und bieten Unterstützung für das, was nicht auf Mutexen gefunden wird, wie zum Beispiel das automatische Löschen des Signals, sobald jemand, der darauf gewartet hat, aufgewacht ist. Die API erlaubt auch das Blockieren bis einer der oder alle mehrere Ereignisse werden signalisiert.
Der Mutex (Mutual Exclusion) dagegen ist ein koordinierter Koordinationsmechanismus für gemeinsame Ressourcen. Denken Sie Transaktion. Sie erwarten nicht, dass Sie warten müssen, sondern auf eine freigegebene Ressource zugreifen möchten, und nur für den Fall, dass andere bereits darauf zugreifen, blockieren Sie.
Wenn Sie versucht haben, ein Ereignis mit einem Mutex zu simulieren, haben Sie das Problem, dass Sie alle anderen aussperren, sobald Sie die Sperre erhalten haben (was "signalisierte Ereignisse" bedeuten sollte) sperren. Das ist nicht die Semantik der Signalisierung eines Ereignisses; Es kann weiterhin gepostet werden, und die "Gates" sind für jeden Thread-Test für das Ereignis geöffnet, ohne irgendwelche Sperren zu erhalten.
Mutex dediziert für Interprozess-Synchronisation. Dies ist ein Kernel-Modus-Objekt. Ereignisse für Multithread-Synchronisation innerhalb eines Prozesses. Dies ist ein Benutzermodus-Objekt.
Mutex-Objekt ist sehr allgemein und zu schwer, auf der anderen Seite Ereignisobjekt ist viel mehr Licht. In den meisten Situationen müssen Sie die Synchronisierung im Benutzermodus verwenden, da sie weniger CPU-Zyklen bietet.
Opps (verpasst ... – yozhik
- 1. Windows-Mutex-Objekt und Semaphor
- 2. Locking und Synchronisation unter Verwendung Mutex
- 3. Windows Event Viewer und log4net
- 4. pthread-like windows manuell-reset event
- 5. TouchMove Event unter iOS
- 6. Wie wird Mutex unter Linux erstellt?
- 7. Welcher Unterschied zwischen C++ Std :: Mutex und Windows CreateMutex
- 8. Mutex-Implementierung und Signalisierung
- 9. Prüfung für Windows Installer Mutex Verfügbarkeit
- 10. gtk.StatusIcon und gtk.Menu unter Windows
- 11. Git und SVN unter Windows
- 12. Kompilieren unter Windows und Linux
- 13. Wie Profil Sperre Konflikte unter g ++/std :: Mutex?
- 14. Event Handler Windows Phone 7
- 15. Windows Forms - Mehrere Event Loops
- 16. Benutzt Mutex
- 17. Mono-Alternative für benannten Mutex
- 18. warum arent Event-Rendering in Vollkalender unter FF11 + und IE8 +
- 19. PopupMenu PopupMenu Closing Event wie Windows Contextmen Closing Event
- 20. Windows-Aktivierungsdienst unter Windows 2003
- 21. Um Mutex oder nicht zu Mutex?
- 22. Ich bekomme Aspen und Gheat unter Windows
- 23. Verwenden von PyUNO unter Windows und CentOS
- 24. Scrollen und Zoomen SVG Viewer unter Windows?
- 25. Cross-kompilieren unter Windows und Linux
- 26. iostream, wifstream und eclipse/g ++ unter Windows
- 27. Symfony2 und Assetics: symlink unter Windows 7?
- 28. TCP-Paket abfangen und Umleitung unter Windows
- 29. mxmlc kompiliert anders unter Linux und Windows?
- 30. Interbase und BDE unter Windows 7
"ist ein Bereichskoordinationsmechanismus für freigegebene Ressourcen. Think transaction" ... haben Sie [this] (http://www.differencebetween.net/miscellaneous/difference-between-mutex-and-event/) geschrieben als Gut? –