int _tmain(int argc, _TCHAR* argv[]) { mutex = CreateMutex( NULL, FALSE, NULL ); WaitForSingleObject( mutex, INFINITE ); WaitForSingleObject( mutex, INFINITE ); printf("here"); return 0; }
因为你创建的mutex一开始没有拥有者
所以第一次WaitForSingleObject会使当前线程获得mutex的所有权,并立即返回
mutex的所有线程再次等待mutex时也不会阻塞,因此第二次WaitForSingleObject也会马上返回
因为你是在同一个线程中调用WaitForSingleObject的
的确同一线程不阻塞
2、这里创建的互斥量没有任何作用,while循环里面的WaitForSingleObject发现访问互斥量的线程是同一个线程,所以会把当前线程置为可调度的