Sagittarius 0 1 сентября, 2014 Опубликовано 1 сентября, 2014 · Жалоба Здравствуйте! Такой вопрос: xQueueSend, если указан таймаут, блокирует поток до постановки сообщения в очередь. А хотелось бы иметь функцию, которая блокирует поток до выборки из очереди этого сообщения. Смотрел доку на API - не нашел. Возможно кто то делал подобную модификацию ядра FreeRTOS ? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
johnshadow 1 1 сентября, 2014 Опубликовано 1 сентября, 2014 (изменено) · Жалоба Здравствуйте! Такой вопрос: xQueueSend, если указан таймаут, блокирует поток до постановки сообщения в очередь. А хотелось бы иметь функцию, которая блокирует поток до выборки из очереди этого сообщения. Смотрел доку на API - не нашел. Возможно кто то делал подобную модификацию ядра FreeRTOS ? Спасибо. указывайте таймаут равный portMAX_DELAY mytype_t Data; while (xQueueReceive(xMyQueue, &Data, portMAX_DELAY)) { ... } Изменено 1 сентября, 2014 пользователем johnshadow Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LightElf 0 16 сентября, 2014 Опубликовано 16 сентября, 2014 · Жалоба Такой вопрос: xQueueSend, если указан таймаут, блокирует поток до постановки сообщения в очередь. А хотелось бы иметь функцию, которая блокирует поток до выборки из очереди этого сообщения. Смотрел доку на API - не нашел. Возможно кто то делал подобную модификацию ядра FreeRTOS ? Сомневаюсь, что кто-то такое делал. Обычно очередь используют, чтобы развязать процесс передачи и процесс приема. Как вариант: в сообщении иметь поле с TaskHandle потока-отправителя. После xQueueSend поток-отправитель тормозите через TaskSusped, а поток-получатель, получив сообщение, его разбудит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться