CreateMutex,WaitForSingleObject一定要在线程里面才阻塞?

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发现访问互斥量的线程是同一个线程,所以会把当前线程置为可调度的


你可能感兴趣的:(windows)