Frage

Jedes Java-Objekt (und seine Klasse) haben einen zugehörigen Monitor. In Pthread Bedingungen ist ein Java-Monitor auf die Kombination eines einspringenden Mutex-äquivalent und eine Zustandsgröße.

Zur Verriegelung stellt die Win32-API-Mutex-Objekte (die einspringende aber Schwergewicht sind) und Kritische Abschnitte (die nichtablaufinvarianten aber leichte). Es bietet auch andere Synchronisationskonstrukte wie Semaphore und Event, hat aber kein explizites Konzept einer Zustandsgröße.

Wenn ich eine JVM geschrieben haben, wie könnte ich diese Win32-Konzepte verwenden Java-Monitore zu implementieren?

War es hilfreich?

Andere Tipps

Fenster haben SignalObjectAndWait (), die auf einer Zustandsgröße in einem Monitor sehr ähnlich wie ein Warte verwendet werden kann. Sie können ein Ereignis verwenden (dh Reset) und ein Mutex und dann Pulseevent () verwenden, um das Äquivalent von Signalisierung der Zustandsgröße zu tun.

Ich schlage vor, Sie nehmen einen Blick auf die OpenJDK Quelle zu sehen, wie die Klasse ReentrantLock umgesetzt wurde.

(ich habe es nicht überprüfe mich so ich bin nicht sicher, ob die Antwort).

die util.concurrent Sperren implementiert sind native API.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top