D2.0 Klassen haben eine __monitor
Klasseneigenschaft, die "Zugriff auf den Monitor des Klassenobjekts gewährt" (documentation). Ich suchte ein wenig und fand keine Informationen außer this Detail. Also: Was ist ein Monitor? Warum wird ein Monitor für alle synchronized member functions verwendet? Ist es ein synchronization primitive für die Synchronisierung von Member-Funktionen ähnlich wie Java? Und warum ist die Eigenschaft __monitor
in der Sprache def, wenn Sie sie nicht verwenden sollen/was sind die Anwendungsfälle?Was ist ein Klassenmonitor in D?
10
A
Antwort
6
Der Monitor ist ein lazy initialisiertes Objekt, mit dem alle synchronisierten Methoden synchronisiert werden, genau wie in Java. Im Gegensatz zu Java ist D eine System-Programmiersprache und stellt Details der unteren Ebene dar, wie die Dinge funktionieren, nur für den Fall, dass Sie sie hacken müssen, selbst wenn dies so ist, ist dies eine schlechte Idee. Dadurch können Sie das Verhalten anpassen. Beispielsweise ist es möglich, das Monitorobjekt einer Klasse anzupassen oder core.sync.mutex
zu verwenden, die einen Monitor mit der Klasse teilt, die es besitzt.
Verwandte Themen
- 1. Was ist (\ d +)/(\ d +) in Regex?
- 2. Was ist 4'd # -Notation?
- 3. Was sind 'ist' Aussagen in D?
- 4. Was ist der Unterschied zwischen: D und: D :?
- 5. Ist in [\ w \ d] nicht \ d redundant?
- 6. Was macht _ ("Text"), d.
- 7. Was bedeutet M, D genau in Dezimal (M, D)?
- 8. Was ist der Unterschied zwischen const und unveränderlich in D?
- 9. Was ist der Unterschied zwischen% d und% * d in der Sprache c?
- 10. Was ist ein Inferenztyp?
- 11. Was bedeutet "-D" in anderen Swift-Flags?
- 12. was ist dereferenz im rahmen von git show-ref -d
- 13. Was bedeutet \ d + in regulären Ausdrücken?
- 14. Was bedeutet mc: Ignorierbar = "d" in WPF?
- 15. Was macht \ d in JavaScript Regex?
- 16. Python schneller als D ?? IO-Operationen scheinen D langsamer zu machen ... was ist los?
- 17. Was ist die beste IDE für DigitalMars D Programmierung?
- 18. Was ist der Unterschied zwischen printf ("% i") und printf ("% d")
- 19. Was ist äquivalenter Remote-API-Befehl zu 'docker run -d'?
- 20. Clojure: Was ist der Unterschied zwischen [D und [Ljava.lang.Double ;?
- 21. scanf ("% d", int) gut gestern, nicht heute. Was ist los?
- 22. Was ist der zugrunde liegende Transport für D-Bus?
- 23. Android Lint Check - StringFormatInvalid: Was ist falsch an% d %% übrig?
- 24. Was ist Squeryl-Syntax für den Ausschluss (d. H.! =)?
- 25. Was ist ein PHP-Framework und was ist ein guter?
- 26. Google AMP: Was ist ein Layout? Was ist ein Behälter?
- 27. Mischbarkeit mit d: DataContext. Was vermisse ich?
- 28. Was ist ein CGVector?
- 29. Was ist ein Steckplatz?
- 30. Was ist ein Kontextwechsel?
Danke. Wenn ich also 'object.d' betrachte, sehe ich eine Schnittstelle' Object.Monitor' (alias 'IMonitor') für diesen Monitor. Das muss ich umsetzen? Und wenn ich 'core.sync.mutex' ansehe, sehe ich eine Beispielverwendung (in den Kommentaren etwas wie' // HINWEIS: Bei DMD kann dies "o .__ monitor = & m_proxy" .') sein. Richtig? – stephan
@stephan: Ich bin mir nicht sicher, ich habe mich noch nie vorher damit herumschlagen müssen, also kenne ich die Details nicht. – dsimcha
Sie sollten den Monitor niemals selbst implementieren oder selbst einstellen, es sei denn, Sie tun etwas sehr seltsames. Ich habe die verschiedenen Synchronisationsprimitive in D ein paar Mal benutzt und musste nie etwas dergleichen tun. –