Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Как определить текущий счётчик семафора 13.09.09 06:57 Число просмотров: 2107
Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 13.09.09 07:02 Количество правок: 2
|
Пытаюсь сделать это при помощи функции
BOOL ReleaseSemaphore(HANDLE hSemaphore, LONG cReleaseCount, LPLONG lpPreviousCount)
В документации написано, что если вызвать функцию ReleaseSemaphore со значением счётчика, превышающим cSemMax (максимальное значение семафора), то текущее значение счётчика не изменится, а в lpPreviousCount будет помещено текущее значение.
У меня данная афёра не прошла - в lpPreviousCount возвращается 0xcccccccc. Что делать?
PS. Функция возвращает FALSE (как это написано в документации), а GetLastError возвращает ошибку 298 (слишком много попыток занесения события для семафора).
Вот код моей функции:
LONG GetCountActiveThreads()
{
LONG lCount;
if (NULL != hSemaphore)
{
ReleaseSemaphore(hSemaphore, 2*appProfile.dwParallel, &lCount);
return appProfile.dwParallel-lCount;
}
else
return 0;
}
---
|
- [Win32] Как определить текущий счётчик семафора - Vedrus 13.09.09 06:57 [2107]
|
|
|