D2.0 классы имеют свойство класса __monitor
, которое "предоставляет доступ к монитору объектов класса" (документация). Я немного искал и не нашел никакой информации, кроме этого подробного описания. Итак: что такое монитор? Почему один монитор используется для всех синхронизированных функций-членов? Является ли это примитив синхронизации, используемый для синхронизации функций-членов, подобных Java? И почему свойство __monitor
в языке def, если вы не должны использовать его/каковы прецеденты?
Что такое классный монитор в D?
Ответ 1
Монитор - это лениво инициализированный объект, с которым синхронизируются все синхронизированные методы, как и в Java. В отличие от Java, D - это язык системного программирования и раскрывает более подробные сведения о том, как все работает на случай, если вам нужно их взломать, даже если это обычно плохое представление. Это позволяет настраивать поведение. Например, можно настроить объект монитора класса или использовать core.sync.mutex
, который разделяет монитор с классом, который его владеет.