> + * The worker MPM should not accept more connections than it
> + currently has available workers. Instead, the listener thread
> + should block on a condition of the fdqueue such that it waits
> + until there are at least one idle worker before continuing
> + into the accept-loop.
Here is an alternate idea... keep track of the number of available workers with a
counter.
If the accept loop detects that the number of available workers has dropped to 0, the
accept thread simply yields it's quanta. Very simple and no overhead associated with a
condition variable. Something like this:
if (!avail_workers) {
yield(); /* or what ever the Unix call is. I know there must be one */
continue;
}
else {
accept();
}
Bill