KosQueuePop()

02 августа 2023

ID kos_queue_pop

Функция объявлена в файле kos/queue.h.

void *KosQueuePop(KosQueueHandle queue, rtl_uint32_t timeout);

Функция извлекает из начала очереди queue объект и возвращает указатель на него.

Параметр timeout определяет поведение функции в случае, если очередь пуста:

  • 0 – немедленный возврат RTL_NULL;
  • INFINITE_TIMEOUT – блокировка в ожидании нового объекта в очереди;
  • любое другое значение timeout – ожидание нового объекта в очереди в течение timeout миллисекунд; по истечении этого времени возвращается RTL_NULL.

Пример

int GpioEventDispatch(void *context)

{

GpioEvent *event;

GpioDevice *device = context;

rtl_bool proceed = rtl_true;

do {

event = KosQueuePop(device->queue, INFINITE_TIMEOUT);

if (event != RTL_NULL) {

if (event->type == GPIO_EVENT_TYPE_THREAD_ABORT) {

proceed = rtl_false;

} else {

GpioDeliverEvent(device, event);

}

KosQueueFree(device->queue, event);

}

} while (proceed);

KosPutObject(device);

return rcOk;

}

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!