pipe()s here too. last time i benchmarked on an early
2.4 kernel, pipe
and socketpair gave about the same timing figures, quicker than
msgsnd/rcv. i don't remember the exact numbers but i remember being
positively surprised.
from the whitepapers that IBM did, the linux FIFO appears to be just
about the fastest IPC mechanism outside of a microkernel. i am not
sure if even futexes are actually significantly faster.
giving you an fd, both pipe and socketpair can be
operated on within a
poll() loop, which is quite handy sometimes. don't know if futexes
will do that?
you can. it was added as an nth-round iteration of their
design. otherwise, it would be just another example of the crappy *nix
design where "waiting" is a different system call depending on what
you're waiting for.