// We maintain two queues for SyncBlock::Wait. // 1. Inside SyncBlock we queue all threads that are waiting on the SyncBlock. // When we pulse, we pick the thread from this queue using FIFO. ... Read More
前面通过Windbg调试步步追踪最后终于发现Wait函数涉及WaitForMultipleObjectsEx的系统调用。 不过这里我还想换一个角度再来追踪一把,这次是通过.Net源码分析进行追踪。 当然,需要首先下载Rotor并配置好,这里假设全部源码文件放在目录d:\sscli20,这里略去不讲。 我们已经知道Wait在托管层最后调用的实际是ObjWait这个函数: [MethodImp... Read More