Perhaps it
would be worth expanding on this: The
"Zero" in ZeroMQ stands for "Zero Copy". Does it
really? Or is it a pun on “zero cost”, or some such? And what is (explicitly)
the relation between the name ZeroMQ and the slogan, “Fastest. Messaging.
Ever”? Etc.
Gonzalo
Diethelm
Gerente Desarrollo de
Sistemas / CDO
Apoquindo 4001 piso 12
Santiago - Chile
+56 2 393-9073
gdiethelm@dcv.cl -- www.dcv.cl
From: zeromq-dev-bounces@lists.zeromq.org
[mailto:zeromq-dev-bounces@lists.zeromq.org] On
Behalf Of Oliver Smith
Sent: Wednesday, 11 August, 2010
22:07
To:
Subject: Re: [zeromq-dev] 0MQ User
Guide
Suggestion:
Before "Show us the code" - you need a short excerpt on "Isn't
message passing expensive" where you can mention the lock free element of
ZeroMQ and expand on the "N-to-N".
Message passing? Sounds messy and expensive.
Actually, message passing is just a fancy name for the hand-off of marshalled
data to someone else. In the simplest, thread-to-thread case, it's as simple as
passing a pointer. The "Zero" in ZeroMQ stands for "Zero
Copy".
In fact, if you've done any work with threads you're probably already a message
passer - you've just been doing it the hard way until now.
True message passing eliminates the need for mutexes, resource locks, condition
queues and signals. That makes parallel programming easier, cleaner and in most
cases it more than pays for the minor overhead of a true message passing
system. ZeroMQ can compete with tools like OpenMP and TBB for sheer
performance, but it can also work alongside them.
But best of all, the API doesn't change when you need to step up from passing
messages between threads of a single process to multiple processes or even
multiple machines. It's as easy as changing the addresses of your connections.
ZeroMQ quietly handles multiple connections on a single socket for you so you
don't have to worry about the fiddly networking stuff when you come to make the
transition.
I'm not sure people are going to register the significance of N-to-N in the 100
word section, the transparent multiplexing of the ZeroMQ sockets is one of the
mind blowing things.
Also... Have you considered perhaps considering the term "Mailbox" or
"handle" or "descriptor" for the sockets? The more distance
you can put between the mundane concept of a BSD/TCP socket and a ZeroMQ
zap-pow-kabloom endpoint the better maybe.
- Oliver