Запись элемента в очередь
Для записи элемента в конец очереди
и с п о л ь з у е т с я 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_
Достарыңызбен бөлісу: |