<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>

<modulesynopsis>
<name>threadpool</name>
<description>Yet another experimental variant of the standard
<module>worker</module> MPM</description>
<status>MPM</status>
<sourcefile>threadpool.c</sourcefile>
<identifier>mpm_threadpool_module</identifier>

<summary>
    <note type="warning"><title>Warning</title>
      <p>This MPM is a developer playground and highly experimental, so it
      may or may not work as expected.</p>
    </note>

    <p>This is an experimental variant of the standard worker MPM.
    Rather than queuing connections like the worker MPM, the
    <module>threadpool</module> MPM queues idle worker threads and
    hands each accepted connection to the next available worker.</p>

    <p>The <module>threadpool</module> MPM can't match the performance of
    the <module>worker</module> MPM in benchmark testing. As of 2.0.39,
    some of the key load-throtting concepts from the <module
    >threadpool</module> MPM have been incorporated into the <module
    >worker</module> MPM. The <module>threadpool</module> code is useful
    primarily as a research platform. For general-purpose use and for any
    production environments, use <module>worker</module> instead.</p>
</summary>

<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>Group</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>Listen</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>LockFile</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxClients</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>PidFile</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ServerLimit</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>StartServers</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ThreadLimit</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>User</name>
</directivesynopsis>

</modulesynopsis>
