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发现访问互斥量的线程是同一个线程,所以会把当前线程置为可调度的
本文详细解析了在同一线程中使用Mutex(互斥量)的行为特点。通过具体的代码示例,解释了为什么在一个线程内连续调用WaitForSingleObject不会引起阻塞现象。此外,还指出了在这种情况下创建的互斥量实际上并无作用。
517

被折叠的 条评论
为什么被折叠?



