xQueueSelectFromSet()
[队列集 API]
queue.h
QueueSetMemberHandle_t xQueueSelectFromSet
(
QueueSetHandle_t xQueueSet,
const TickType_t xTicksToWait
);
必须在 FreeRTOSConfig.h 中将 configUSE_QUEUE_SETS 设置为 1,才能使用 xQueueSelectFromSet() API 函数。
xQueueSelectFromSet() 从队列集成员中选择队列或信号量,
它们要么包含数据(若选择队列),要么可供获取
(若选择信号量)。 xQueueSelectFromSet() 能有效
允许任务同时读取一个队列集中的所有
队列和信号量后阻塞(挂起)。
注意:
-
您也可以不使用队列集,而是采用更简单的替代方案。 请参阅
阻塞多个对象页面
了解详情。
-
阻塞包含互斥锁的队列不会导致
互斥锁持有者继承被阻塞任务的优先级。
-
除非 xQueueSelectFromSet()
信号量)操作,除非
调用 xQueueSelectFromSet() 先返回了队列集成员的句柄。
-
参数:
-
xQueueSet
|
任务(可能)阻塞的队列集。
|
xTicksToWait
|
调用任务保持阻塞状态(其他任务正在执行),
等待队列集成员做好准备
以便成功读取队列或获取信号量所需的最长时间,
以滴答为单位。
|
-
返回:
-
xQueueSelectFromSet() 将返回
队列集中包含数据的队列的句柄(转换为 QueueSetMemberHandle_t 类型)
或队列集中可用信号量的句柄(转换为 QueueSetMemberHandle_t 类型),
如果在指定的阻塞时间到期之前不存在这样的队列或信号量,
则返回 NULL。
用法示例:
请参阅 xQueueCreateSet() 文档页面上的示例。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.