[EMAIL PROTECTED] wrote:
>
> I now have a patch that compiles cleanly, and should completely remove the
> pipe_of_death. The basic idea is that everything is done through signals,
> using the SIGWAIT logic. As for waking threads up from apr_poll, that is
> done by connecting to the socket from the server itself, and then
> immediately closing the socket.
>
>
> The idea for the patch came in a conversation with Greg Ames earlier
> today, so he deserves the share the credit for the patch. :-)
>
Mostly I deserve credit for pissing Ryan off enough to get his creative
juices flowing in a good direction. Apparently that's a useful thing to
do once in a while. :-)
There are a couple of things I really like about this idea:
* If we minimize the number of different control paths into the child
processes, we minimize race conditions, minimize path length in
worker_thread, and maximize reliability. With the pipe of death gone,
there will be one control path into the child, namely signals.
* (drum roll...) SINGLE_LISTEN_UNSERIALIZED_ACCEPT becomes possible once
more. This means we have a potential gain in scalability in the
threaded mpm, as well as shrinking worker_thread path length some more.
Look out Zeus, iPlanet, and IIS! oh yeah, we still have a problem with
malloc/free, but we kinda sorta have a direction to take care of that.
Yes, there are some messy details to work out to get S_L_U_A working
reliably, but it's worth it.
Greg