掌握某些技术时,你必须知道它是如何在一个抽象级别下制作的.在多线程编程的情况下,了解同步原语将是很好的.
这是一个问题,如何在.NET中实现Lock(Monitor)?
我对以下几点感兴趣:
- 它是否使用OS对象?
- 是否需要用户模式或内核模式?
- 等待锁定的线程的开销是多少?
- 在什么情况下,等待锁的线程队列可能会被违反?
更新:
"如果有多个线程争用锁定,它们会在"就绪队列"上排队,并按照先到先得的原则授予锁定.注意:Windows和CLR行为的细微差别意味着有时会违反队列的公平性. "[C#4.0 in a Nutshell,Joseph Albahari]所以这就是我在关于'违规队列'的最后一个问题中所要求的.