我使用msgrcv()从队列中读取消息。有多个线程,每个线程从一个公共队列处理自己的消息类型。假设有3个线程分别处理消息类型A、B和C,如下所示:
thread1()
{
msg_t msg;
while(1)
{
msgrcv(qid, msg, sizeof(msg), A, 0)
.
.
}
}
.
.
thread2()
{
msg_t msg;
while(1)
{
msgrcv(qid, msg, sizeof(msg), B, 0)
.
.
}
}
.
.
thread3()
{
msg_t msg;
while(1)
{
msgrcv(qid, msg, sizeof(msg), C, 0)
.
.
}
}`
现在,我想要第四个线程,它可以接收除这三个之外的所有消息。可以使用MSG_EXCEPT标志来实现吗?
谢谢。
我不知道如何使用“MSG_EXCEPT”标志一次排除多个消息类型。
发布于 2022-11-30 15:17:37
可以用MSG_EXCEPT标志来实现吗?
不,它不能。相反,如果您可以安排A、B和C大于所有其他已使用的消息类型,则可以通过指定小于A、B和C的msgtyp的负数来达到目标。
https://stackoverflow.com/questions/74624322
复制相似问题