Le 2 nov. 05 à 12:11, Alfons Adriaensen a écrit :
On Wed, Nov 02, 2005 at 11:56:59AM +0100, St?phane
Letz wrote:
I must be
missing something essential here. Access to named things
that have to be opened is normally by a file descriptor, and file
descriptors are bound a process. How then can you give *all* clients
access to the named pipe or sema created for a new client ?
The synchronization primitive is actually created by the server when
a new client register. Then a client identifier (built using the
actual client name) is transfered to all running clients that will
define/access the synchronization primitive in their own process.
But in order to define/access it in their own process, they have to
open()
it, i.e. perfrom a call to the filesystem, or am I wrong here ?
Yes, clients use open *once* when the new client opens. This is done
in a non RT thread (what we call the "notification" thread that also
handle all non RT events like callback...)
This means that changing the graph order can never be
a RT operation,
unless clients get a second, non-RT thread to perform this call from.
There is no need to open the synchronization primitive at graph re-
order time. Since a given client can access all synchronization
primitive, when the graph order changes, then the client will
possibly have to notify another primitive.
Stephane