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.