由于lock是System.Threading.Monitor的间接表示,如果我希望直接使用Monitor,我可以获得任何额外的好处.(我读过一篇文章,它建议总是使用Monitor来获得额外的好处.但是没有这些好处的解释)
Pao*_*sco 10
该lock语句是Monitor类Enter和Exit方法的语法糖.
你仍然可以使用Pulse和Wait如下:
lock(x) {
Monitor.Pulse(x);
Monitor.Wait(x);
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用非阻塞的TryEnter方法,您必须(至少据我所知)直接使用Monitor .
我不同意你应该经常使用的断言Monitor; lock当你只需要做它提供的东西时,关键字很方便.
好了,lock只要求Monitor.Enter和Monitor.Exit,所以如果你限制自己lock,你将无法使用其他有用的功能,如Monitor.Wait,Monitor.Pulse等,否则没有任何真正的缺点使用lock,而不是手动使用Monitor.Enter和Monitor.Exit,并lock确实具有以下优势:它会自动将相应的代码放入try-finally块中.
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |