[linux-audio-dev] jack_callback <-> rest of the world
Stéphane Letz
letz at grame.fr
Wed Dec 7 08:30:28 UTC 2005
Le 7 déc. 05 à 02:00, Lee Revell a écrit :
> On Wed, 2005-11-02 at 11:48 +0100, Florian Schmidt wrote:
>> On Wed, 2 Nov 2005 11:05:34 +0100
>> Stéphane Letz <letz at 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).
>
> I've tested process shared mutexes/CVs with NPTL 2.3.5 on Linux 2.6
> and
> it works perfectly - I'm able to synchronize multiple processes via a
> mutex/CV residing in shared memory, backed by an mmap'ed file in /tmp.
Do you have any test code you could share?
> The performance is indistinguishable from the single multithreaded
> process case.
>
> Is there any good reason JACK could not use this rather than FIFOs?
> Lack of robustness?
>
jackd (of jackdmp in "synch" mode) where the server waits for all
clients to finish in a given cycle require the used synchronization
primitive to have a "wait with time-out" operation. Fifo can do that
(using poll), Mach semaphore on OSX can do that, but POSIX named
semaphore not.
Do process shared mutexes/CVs have a "wait with time-out" operation.?
Thanks
Stephane
More information about the Linux-audio-dev
mailing list