C 是否使用消息队列锁定
我正在尝试在Linux中使用消息队列,是否可以执行以下操作 进程1的消息队列名为1C 是否使用消息队列锁定,c,linux,message-queue,C,Linux,Message Queue,我正在尝试在Linux中使用消息队列,是否可以执行以下操作 进程1的消息队列名为1 生产者1和生产者2向没有锁定机制的人发送消息,可以吗?Sys V消息队列提供优先级,以便可以指定特定的队列收件人,并可以获取针对它的消息。毫无争议。队列读取器也可以访问任何消息,具体取决于msgrcv()中的mtype值。POSIX消息队列有点不同。通常,您可以使用sysv队列,而不必担心锁定资源。SYSV信号量队列和共享内存也有一些缺点。就像它们是内核持久性的一样 试试http://beej.us/guide/
生产者1和生产者2向没有锁定机制的人发送消息,可以吗?Sys V消息队列提供优先级,以便可以指定特定的队列收件人,并可以获取针对它的消息。毫无争议。队列读取器也可以访问任何消息,具体取决于
msgrcv()
中的mtype值。POSIX消息队列有点不同。通常,您可以使用sysv队列,而不必担心锁定资源。SYSV信号量队列和共享内存也有一些缺点。就像它们是内核持久性的一样
试试
http://beej.us/guide/bgipc/
一般来说,这取决于“锁”和“队列”的含义。严格来说,有一些CPU原子指令可以用来代替操作系统提供的自旋锁或线程同步原语。我指的是System V或POSIX消息队列和锁,比如说emaphoreThanks Jim,我想我也不需要POSIX队列的锁,请检查此链接,如果我错了,请告诉我。正如我所读到的,您的链接不是POSIX消息队列,而是套接字。您还可以围绕POSIX队列上的资源控制需求编写代码。只是在Sys V上实现更简单,IMO.POSIX消息队列也是内核持久性的。请参阅(持久性)下的man mq_概述:POSIX消息队列具有内核持久性:如果没有通过mq_unlink(3)删除,则消息队列将存在,直到系统关闭。