tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: posix message queues and multiple receivers
Marc Balmer <marc%msys.ch@localhost> wrote:
> 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).
No, this is exactly how a message queue works (whether it is POSIX, SysV
or some other implementation).
> > 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.
>
I think Martin already explained..
Imagine you just want to get a message, process it (parse, decrypt,
transform, perhaps consume multiple messages and aggregate them, or
whatever you want to do) and either pass to a next component in the
system or perhaps store it (write to disk, memory, or some database).
Instead of processing the messages in a single-threaded manner, you
can spawn multiple workers (receivers) and process them in parallel.
--
Mindaugas
Home |
Main Index |
Thread Index |
Old Index