Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] вопрос про Semaphore 08.05.02 14:59
Автор: 1blin Статус: Незарегистрированный пользователь
|
может быть и глупый вопрос...
Вот есть у меня, скажем, очередь с семафором. Семафор - чтобы элементы очереди "считать".
Есть функция AddElement, в ней ReleaseSemaphore() - на единичку увеличивает.
Есть функция GetElement, в ней Wait... - когда дождется - на единичку уменьшает.
Да вот понадобилась мне функция Delete_ALL_Elements. А что с семафором делать - ума не приложу! Как его сразу в ноль сбросить? (Вроде бы естественное желание, а?; а ничего подобного не нашел :()
Ну не закрывать же его и снова создавать, в самом деле?
|
|
[C++] вопрос про Semaphore 08.05.02 16:15
Автор: Cyril <sc> Статус: Member
|
> может быть и глупый вопрос... > Вот есть у меня, скажем, очередь с семафором. Семафор - > чтобы элементы очереди "считать". > Есть функция AddElement, в ней ReleaseSemaphore() - на > единичку увеличивает. > Есть функция GetElement, в ней Wait... - когда дождется - > на единичку уменьшает. > Да вот понадобилась мне функция Delete_ALL_Elements. А что > с семафором делать - ума не приложу! Как его сразу в ноль > сбросить? (Вроде бы естественное желание, а?; а ничего > подобного не нашел :() > Ну не закрывать же его и снова создавать, в самом деле?
The initial count of a semaphore is typically set to the maximum value.
помоему, чтобы сбросить семафор(выставить count на максимальную величину, а не на ноль ) надо вызвать
ReleaseSemaphore(hSem, maximum value-current value, null)
|
|
|