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