win32信号量

时间:2012-03-01 23:53:03

标签: multithreading winapi semaphore

我正在尝试创建一个简单的信号量,只允许1个线程递增计数变量,但我目前正在做的事情似乎不起作用。我的语法有问题还是我完全走错了路? (我将信号量互斥命名为,因为它只能有0或1的值)

WaitForSingleObject(mutex, 0);
count = count + 1;
ReleaseSemaphore(mutex, 1, NULL);

2 个答案:

答案 0 :(得分:2)

来自the MSDN page,重点补充:

DWORD WINAPI WaitForSingleObject(
    __in  HANDLE hHandle,
    __in  DWORD dwMilliseconds
);
     

dwMilliseconds [in]
  超时间隔,以毫秒为单位。如果指定了非零值,则该函数将一直等到对象发出信号或经过间隔。 如果 dwMilliseconds 为零,则如果未发信号通知该函数,则该函数不会进入等待状态;它总是立即返回。如果 dwMilliseconds INFINITE,则仅在对象发出信号时才会返回该函数。

答案 1 :(得分:0)

尝试INFINITE而不是零作为WaitForSingleObject的第二个参数。