Ein Thread ist eine Art leichtgewichtiger Prozess, der im Vergleich zu einem richtigen Prozess wesentlich weniger Ressourcen verbraucht. Dadurch steigt bei der Verwendung von Threads statt Prozessen auch die Performance. Der Nachteil ist dabei, dass Anwendungen für die Ausführung in einer Thread-Umgebung thread-safe sein müssen. Dies bedeutet:
Funktionen (bzw. bei objektorientierten Anwendungen die Methoden) müssen „reentrant“ sein, das heißt dass die Funktion mit dem gleichen Input immer das gleiche Ergebnis liefert, unabhängig davon ob sie gleichzeitig von anderen Threads ausgeführt wird. Funktionen müssen demnach so programmiert sein, dass sie von mehreren Threads gleichzeitig aufgerufen werden können.
Der Zugriff auf Resourcen (meistens Variablen) muss so geregelt sein, dass sich die gleichzeitig laufenden Threads dabei nicht in die Quere kommen.
Apache 2 kann Anfragen als eigene Prozesse oder in einem gemischten Modell mit Prozessen und Threads ausführen. Für die Ausführung als Prozess sorgt das MPM „prefork“, für die Ausführung als Thread das MPM „worker“. Bei der Installation (siehe Abschnitt 15.6. “Installation”) kann man auswählen, welches MPM verwendet werden soll. Der dritte Modus, „perchild“ ist noch nicht voll ausgereift und steht deswegen in bei der Installation (noch) nicht zur Verfügung.