Редът за изваждане от опашката по подразбиране според мен е първи влязъл, първи излязъл, следователно те ще бъдат извадени от опашката в същия ред, в който са били поставени.
За вашата втора точка, искате ли да кажете, че искате да сериализирате деопашката на не-уникалния идентификатор? Т.е. по същество имате много опашки във вашата опашка и искате само едно задание да консумира съобщения от всяка опашка във всеки един момент?
Т.е. имате съобщения:
<предварителен код>1 | a2 | a3 | b4 | aТук имате два типа записи (a и b) и искате 1 задача да поглъща всички a, а друга - всички b. Ако случаят е такъв, може би обмислете създаването на множество опашки?
При неуспех на няколко опашки, погледнете типа dequeue_options_t, който предавате на процедурата за изваждане от опашката - най-вече dequeue_condition - това ви позволява да избирате само конкретни съобщения, така че да можете да започнете работа за всички a и друга за всички b и т.н.