hro*_*tyr 21
在我的脑海中,假设您谈论posix消息队列(而不是SysV消息队列):
select(),poll(),epoll()和朋友上mqd_t.mvd*_*vds 12
真的,它们是非常不同的东西.
最大的实际区别是管道没有"消息"的概念,它只是一个到write()字节的管道和read()来自的字节.接收端必须能够知道哪些数据构成了程序中的"消息",您必须自己实现.此外,字节的顺序是定义的:字节将按照你输入的顺序出现.而且,一般来说,它有一个输入和一个输出.
消息队列用于传输具有类型和大小的"消息".因此,接收端可以等待具有特定类型的一条"消息",并且您不必担心这是否完整.多个进程可以向同一队列发送和接收.
查看man mq_overview和/或man svipc了解更多信息.