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


Запись элемента в очередь



Pdf көрінісі
бет49/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   45   46   47   48   49   50   51   52   ...   129
Kurniz

Запись элемента в очередь
Для записи элемента в конец очереди 
и с п о л ь з у е т с я A P I - ф у н к ц и я 
xQueueSendToBack(), для записи элемента 
в начало очереди — xQueueSendToFront()
Так как запись в конец очереди применяет-
ся гораздо чаще, чем в начало, то вызов API-
функции xQueueSend() эквивалентен вызо-
ву xQueueSendToBack(). Прототипы у всех 
трех API-функций одинаковы:
portBASE_TYPE xQueueSendXXXX (xQueueHandle xQueue,
const void * pvItemToQueue,
portTickType xTicksToWait );
Назначение параметров и возвращаемое 
значение:
xQueue
• 
— дескриптор очереди, в которую 
будет записан элемент. Дескриптор очере-
ди может быть получен при ее создании 
API-функцией xQueueCreate().
pvItemToQueue
• 
— указатель на элемент, 
который будет записан в очередь. Размер 
элемента зафиксирован при создании оче-
реди, так что для побайтового копирова-
ния элемента достаточно иметь указатель 
на него.
xTicksToWait
• 
максимальное количество 
квантов времени, в течение которого задача 
может пребывать в блокированном состоя-
нии, если очередь полна и записать новый 
элемент невозможно. Для представления 
времени в миллисекундах следует исполь-
зовать макроопределение portTICK_RATE_
MS [1, КиТ № 4]. Задание xTicksToWait 
равным «0» приведет к тому, что задача 
не перейдет в блокированное состояние, 
если очередь полна, а продолжит свое вы-
полнение. Установка xTicksToWait рав-
ным константе portMAX_DELAY приведет 
к тому, что выхода из блокированного со-
стояния по истечении тайм-аута не будет. 
Задача будет сколь угодно долго «ожидать» 
возможности записать элемент в очередь
пока такая возможность не появится. 
При этом макроопределение INCLUDE_


Достарыңызбен бөлісу:
1   ...   45   46   47   48   49   50   51   52   ...   129




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

    Басты бет