Компоненты и технологии • №2 '2011 компоненты


работа со счетными семафорами



Pdf көрінісі
бет66/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   62   63   64   65   66   67   68   69   ...   129
Kurniz

работа со счетными семафорами
Создание счетного семафора
Как и другие объекты ядра, счетный сема-
фор должен быть явно создан перед первым 
его использованием:
xSemaphoreHandle xSemaphoreCreateCounting( unsigned portBASE_
TYPE uxMaxCount,
unsigned portBASE_TYPE uxInitialCount );
Назначение параметров и возвращаемое 
значение:
1. uxMaxCount — задает максимально воз-
можное значение семафора. Если проводить 
аналогию с очередями, то он эквивалентен 
размеру очереди. Определяет максимальное 
количество событий, которые может обра-
ботать семафор, или общее количество до-
ступных ресурсов, если семафор использу-
ется для управления ресурсами.
2. uxInitialCount — задает значение сема-
фора, которое он принимает сразу после 
создания. Если семафор используется для 
подсчета событий, следует установить 
uxInitialCount равным 0, что будет озна-
чать, что ни одного события еще не про-
изошло. Если семафор используется для 
управления доступом к ресурсам, то сле-
дует установить uxInitialCount равным 
максимальному значению — параметру 
uxMaxCount. Это будет означать, что все 
ресурсы свободны.
рис. 8. Подсчет событий с помощью счетного семафора
а
б
в
г
д
е


29
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2011
www.kite.ru
микроконтроллеры
3. Возвращаемое значение — равно NULL, 
если семафор не создан по причине отсут-
ствия требуемого объема свободной памя-
ти. Ненулевое значение означает успешное 
создание счетного семафора. Это значе-
ние необходимо сохранить в переменной 
типа xSemaphoreHandle для обращения 
к семафору в дальнейшем.
API-функции выдачи (инкремента, уве-
личения на единицу) и захвата (декремен-
та, уменьшения на единицу) счетного сема-
фора ничем не отличаются от таковых для 
двоичных семафоров: xSemaphoreTake() — 
з а х в ат с е м а ф о р а ; xSemaphoreGive()


Достарыңызбен бөлісу:
1   ...   62   63   64   65   66   67   68   69   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет