Win32 Семафоры - PullRequest
       6

Win32 Семафоры

0 голосов
/ 02 марта 2012

Я пытаюсь создать простой семафор, который позволит только 1 потоку увеличивать переменную count, но то, что я сейчас делаю, похоже не работает Что-то не так с моим синтаксисом или я совершенно не на своем пути? (Я назвал мьютекс семафора, потому что он может иметь значение только 0 или 1)

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

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

С страница MSDN с добавлением акцента:

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

dwMilliseconds [in]
Интервал времени ожиданиямиллисекунды.Если указано ненулевое значение, функция ожидает, пока объект не будет сигнализирован или интервал не истечет. Если dwMilliseconds равен нулю, функция не переходит в состояние ожидания, если объект не передан;это всегда возвращается немедленно.Если dwMilliseconds равно INFINITE, функция вернется только при сигнале объекта.

0 голосов
/ 02 марта 2012

Попробуйте INFINITE вместо нуля в качестве второго аргумента для WaitForSingleObject.

...