Monitor.Enter()方法的内部工作

时间:2012-08-15 18:34:40

标签: c# .net multithreading

  

可能重复:
  Lock (Monitor) internal implementation in .NET

我想知道Monitor.Enter()方法是如何工作的?我知道堆上分配的每个对象都有与之关联的Sync Block结构。 SyncBlock结构包含用于Monitor,Hashcode,AppDomainID的数字,用于与com /非托管代码进行互操作的thunking数据。 CLR如何处理多个锁定请求?如果一个线程持有一个锁(可能通过增加Monitor字段的SyncBlock数据结构的值),其他线程将进入WaitSleepJoin状态。 CLR如何在这种状态下处理线程,以便一旦锁定被释放,只有一个线程将被恢复,而其他线程将继续等待锁定? CLR是否创建任何WaitHandle对象并将线程放在WaitHandle对象上等待?

0 个答案:

没有答案