我正在尝试创建一个简单的信号量,只允许1个线程递增计数变量,但我目前正在做的事情似乎不起作用。我的语法有问题还是我完全走错了路? (我将信号量互斥命名为,因为它只能有0或1的值)
WaitForSingleObject(mutex, 0);
count = count + 1;
ReleaseSemaphore(mutex, 1, NULL);
答案 0 :(得分:2)
来自the MSDN page,重点补充:
DWORD WINAPI WaitForSingleObject( __in HANDLE hHandle, __in DWORD dwMilliseconds );
dwMilliseconds [in]
超时间隔,以毫秒为单位。如果指定了非零值,则该函数将一直等到对象发出信号或经过间隔。 如果 dwMilliseconds 为零,则如果未发信号通知该函数,则该函数不会进入等待状态;它总是立即返回。如果 dwMilliseconds 为INFINITE
,则仅在对象发出信号时才会返回该函数。
答案 1 :(得分:0)
尝试INFINITE
而不是零作为WaitForSingleObject
的第二个参数。