Posix消息队列
目录 1. 概述 2. Posix消息队列 创建与打开 关闭与删除 消息队列属性 获取属性 设置属性 消息发送与接收 3. 消息队列限制 4. 生产者消费者问题——Posix消息队列实现 单生产者 + 单消费者 多生产者 + 单消费者 5. 效率对比 1. 概述 消息队列可认为是一个消息链表,队列中的每个消息具有如下属性: 消息优先级,由发送者赋予 消息数据长度,可以为0 消息数据(如果消息数据长度大于0) Posix消息队列主要用于线程间消息的传递: A线程向队列中放置消息,B线程从队列中取出消息 A线程向队列写入消息之前,不需要B线程在该队列上等待消息的到达 A线程向队列写入消息之后,B线程可以在之后的某个时刻取出消息 A线程只关心向队列放入消息,B线程只关心从队列取出消息,A、B两个线程相互独立、互不影响 2. Posix消息队列 创建与打开 mq_open 用于创建一个新的消息队列或打开一个已存在的消息队列, 编译时需指定链接-lrt, 下面其他函数同理。 //成功返回消息队列描述符,失败返回-1 mqd_t mq_open(const char *name, int oflag, ... /* mode_t mode, struct mq_attr *attr */); 当创建一个新的消息队列时, attr参数用于给新队列指定某些属性, 若attr为NULL