at page 196 of reference manual v10.0.0:
A receive (in the case of a queue) or take (in the case of a semaphore) operation must not be
performed on a member of a queue set unless a call to xQueueSelectFromSet() has first
returned a handle to that set member.
if the operation above been done,what problem would happend. Thanks.
by the way,the situation is, if a queue has been add to a queueset,so this operation above can’t perform any where after the adding operation. Is that right?
A QueueSet work by having the QueueSet actually be a queue of queue-handles that each insert onto one of its member queues, inserts that queues handle onto the queue set queue. If you remove an item off of one of the member queues without first getting its handle off the QueueSet means that somewhere in that QueueSet is the handle for that queue to represent the item you removed. Later when you get that handle off the QueueSet, there won’t be the item in the Queue to represent it.
A Second problem is that now the QueueSet might become full and unable to accept a handle even though the Queue had room for the item, and that might get things more out of sync.
Basically, ALL reads to the QueueSet should be done under the direction of the QueueSet.
Your words “queue of queue-handles” make it to understand so clear, a good guidence for me.