Я работаю с FreeRTOS и использую xQueueReceive () в задаче, созданной с помощью xTaskCreate()
. Задача обрабатывает только полученные сетевые пакеты. Вот реализация задачи:
while(1) {
if(sys_link_recv_queue != NULL) {
mb32_packet_t packet;
if(xQueueReceive(sys_link_recv_queue, &packet, portMAX_DELAY)==pdPASS) {
// process packet ...
}
}
}
При использовании portMAX_DELAY
очередь ждет неопределенно долго, пока элемент очереди не станет доступным. Мой вопрос сейчас заключается в том, теряю ли я ценное время процессора в этом состоянии ожидания или это рекомендуемый способ сделать это. Если это не самый экономичный способ сделать это, какова альтернатива?