使用Windbg跟踪一个最简单的死锁,发现有同步Event对象。然后跟踪EnterCriticalSection竟然发现有CreateEvent和ZwWaitForSingleObject的调用(如果使用spinlock可以避免)。
这点好像和Jeffiery 的Advance Windows Programming有点出入。
这点好像和Jeffiery 的Advance Windows Programming有点出入。
只有在使用InitializeCriticalSectionAndSpinLock设置了此CRITICAL_SECTION中spinlock的值才会使用spinlock,而且当两个线程以上同时访问这个结构的时候系统也会使用EVENT的。