On Wed, 14 Nov 2001, Karl MacMillan wrote:

> By having each client directly call the next client (by writing to the pipe) 
> instead of having the server (jackd) call each client in turn there are less 
> context switches - i.e. the server process is woken up less times.
> 
> Karl

If I understand correctly, by reading the source and arguing with paul
:), the loop goes like this: well, actually, just the relevant part of
engine.c (this is from the old tarball, i haven't checked out cvs yet):

in the function jack_engine_process(), trimmed for brevity:

write (client->subgraph_start_fd, &c, sizeof (c));

pollfd[0].fd = client->subgraph_wait_fd;
pollfd[0].events = POLLIN|POLLERR|POLLHUP|POLLNVAL;

poll (pollfd, 1, engine->driver->period_interval);

read (client->subgraph_wait_fd, &c, sizeof (c));

so, if i understand correctly, jackd actually does get woken up after
each process. that's also necessary, so that if a client takes too long
that it can be cut out.

regards,

wingo.

Reply via email to