Am 26.11.13 15:13, schrieb Mindaugas Rasiukevicius: > Hi, > > The question is not really kernel related. Possibly tech-userlevel@, > but neither it is related with NetBSD per se.
I asked here because it is implemented in the kernel and because what I see might as well be a buglet (given that aio does not work either as expected). > Marc Balmer <[email protected]> wrote: >> What is the prupose or reasoning behind the fact that multiple processes >> can open a message queue for reading using mq_open()? >> >> I wrote simple mq sender and mq receiver programs; when I start multiple >> receivers on the same mq, and send a message to it, only one of the >> receivers gets the message, in a round robin fashion. That is probably >> by design, but if a mq is meant to connect only two processes, why can >> more than two processes open it? > > Why do you think it is meant to connect only two processes? It is an > asynchronous inter-process communication mechanism, it is just a FIFO > queue of messages. To expand what Martin said, you can have multiple > producers and multiple consumers (M:N, not only 1:N or M:1) since it > really depends on what are you build on top of this interface. So what is the purpose of those interface? When I inject a message, I don't know which of the possibly many receivers is getting it? I somewhat fail to understand the utility of more than one receivers. > > These are basic IPC concepts. I would suggest to Google for "POSIX > message queue" or just check the Wikipedia page first. We also have > a pretty good mqueue(3) manual page. And you really think I did not read the man pages and other docs before? I am almost spending the whole trying to find out more about posix queues...
