On Fri, Apr 04, 2003 at 07:43:40AM -0500, Paul Davis wrote:
there are several solutions, none of them particularly
good. the best
is to wait on a FIFO. these provide a fast, 99% non-blocking way to
get 1 process to wake up another. the "real" solution needs to be
provided by the kernel, and futexes in 2.5/2.6 will be fairly
close. they are still not completely correct for our purposes, but
they will probably work OK.
The futexes are the solution. You can basically wait, until a
long at a specified address is changed, if you tell the kernel
that it might be changed, after you did. So the kernel just does
the sleep/wakeup for you, nothing else.
But you can also just do what you want and use the NPTL of RH9,
which uses futexes transparently, if available.
That way you get a performance gain on machines you recommend
while still being correct on every other machine with POSIX
threading implemented.
Regards
Ingo Oeser
--
Marketing ist die Kunst, Leuten Sachen zu verkaufen, die sie
nicht brauchen, mit Geld, was sie nicht haben, um Leute zu
beeindrucken, die sie nicht moegen.