Le 2 nov. 05 à 11:48, Florian Schmidt a écrit :
On Wed, 2 Nov 2005 11:05:34 +0100
Stéphane Letz <letz(a)grame.fr> wrote:
In Jackdmp we have tested 2 system for
inter-process synchronization:
fifo (the way it was done in regular jackd) and POSIX named semaphore
(which are built on top of futex on recent system version)
In both cases, each already running client get access to the
synchronization primitive (fifo or POSIX named sema) defined by a new
coming client. The synchronization primitive is "opened" once when a
new client appears and is "closed" when the client quits. The
synchronization primitive that has to be signaled then depends of the
graph topology.
But ISTR that OSX only has named shared futexes
(i.e. accessed
via a file descriptor), and then of course the problem remains.
On OSX, on can use Mach semaphore (internal and non portable...)
POSIX named semaphore or fifo.
Stephane
What results did you get? Did the semaphore perform better/worse than
the fifo? What about pthread condition variables with pshared flag
set?
I read somewhere it should be implemented by now (at least on 2.6
systems).
Flo
On Linux, the semaphore is a bit faster than fifo.
On OSX we have in speed order : Mach semaphore, POSIX semaphore, fifo
I've not tested the pthread condition variables with pshared flag
set, it should probably work also on recent 2.6 kernel. But i guess
all primitives are built on top of futex APi on the end.
Stephane