D 中的班长是啥?

Posted

技术标签:

【中文标题】D 中的班长是啥?【英文标题】:What is a class monitor in D?D 中的班长是什么? 【发布时间】:2011-01-24 21:05:43 【问题描述】:

D2.0 类有一个__monitor 类属性,“允许访问类对象的监视器”(documentation)。我搜索了一下,除了this 一点细节之外没有找到任何信息。那么:什么是显示器?为什么所有synchronized member functions 都使用一台显示器?是不是一个synchronization primitive 用来同步类似Java的成员函数?如果您不应该使用 __monitor 属性,为什么在语言 def 中使用它/用例是什么?

【问题讨论】:

【参考方案1】:

监视器是一个延迟初始化的对象,所有同步方法都在该对象上进行同步,就像在 Java 中一样。与 Java 不同,D 是一种系统编程语言,它公开了事物如何工作的较低级别的细节,以防万一您需要破解它们,即使这样做通常是个坏主意。这允许您自定义行为。例如,可以自定义类的监视器对象,或者使用与拥有它的类共享监视器的core.sync.mutex

【讨论】:

谢谢。所以,如果我查看object.d,我会看到此监视器的接口Object.Monitor(又名IMonitor)。这是我必须实施的吗?如果我查看 core.sync.mutex,我会看到一个示例用法(在 cmets 中类似于 // NOTE: With DMD this can be "o.__monitor = &m_proxy".)。对吗? @stephan:我不确定,我以前从来没有真正搞过这个,所以我不知道它的细节。 你不应该自己实现或设置监视器,除非你正在做一些非常奇怪的事情。我在 D 中使用过各种同步原语几次,但从来没有做过任何类似的事情。

以上是关于D 中的班长是啥?的主要内容,如果未能解决你的问题,请参考以下文章

“npm -d install”中的“-d”是啥?

mysqld.exe中的d是啥意思

JSON 中的 .d 是啥意思?

printf中的%*d是啥意思?

四维空间引发-维度空间(0-10)来自我的教授的班长

预训练的 GloVe 矢量文件(例如 glove.6B.50d.txt)中的“unk”是啥?