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