C# - System.Threading.Monitor控制线程的优点

use*_*677 4 c#

由于lock是System.Threading.Monitor的间接表示,如果我希望直接使用Monitor,我可以获得任何额外的好处.(我读过一篇文章,它建议总是使用Monitor来获得额外的好处.但是没有这些好处的解释)

Pao*_*sco 10

lock语句是Monitor类EnterExit方法的语法糖.

你仍然可以使用PulseWait如下:

lock(x) {
    Monitor.Pulse(x);
    Monitor.Wait(x);
}
Run Code Online (Sandbox Code Playgroud)

如果您想使用非阻塞的TryEnter方法,您必须(至少据我所知)直接使用Monitor .

我不同意你应该经常使用的断言Monitor; lock当你只需要做它提供的东西时,关键字很方便.


Jor*_*ren 5

好了,lock只要求Monitor.EnterMonitor.Exit,所以如果你限制自己lock,你将无法使用其他有用的功能,如Monitor.Wait,Monitor.Pulse等,否则没有任何真正的缺点使用lock,而不是手动使用Monitor.EnterMonitor.Exit,并lock确实具有以下优势:它会自动将相应的代码放入try-finally块中.