On Mon, Jul 16, 2001 at 02:24:28PM -0400, Greg Ames wrote:
> eh? why not? Works fine on OS/390; I suspect it works fine on recent
> Linux kernels too.
Please read the earlier threads (it's long and confusing though).
In short: we can't have all of the threads in a process waiting for
the accept (blocking call). Why?
Consider the POD. One thread receives the connect that occurs with the
POD, reads the POD, sets workers_may_exit, and exits. Now, on machines
with S_L_U_A, all of the other threads are now in the blocking accept
(on machines without S_L_U_A, they are in a cross-process mutex
acquire). They will never wake up until they receive a connection (or
get the mutex). This won't happen on a fairly-idle server for a long
time - even though we want to die. Hence, you need to serialize all
of the worker threads in a process using something similar to the
patch I submitted. -- justin