Una hebra o thread es una especie de proceso “light” que requiere menos recursos que un proceso normal. Por este motivo, el rendimiento aumenta cuando se usan threads en vez de procesos. El inconveniente radica en que las aplicaciones han de ser “thread-safe” para poder ejecutarse en un entorno de threads. Esto significa:
Las funciones (o métodos en el caso de las aplicaciones orientadas a objetos) deben ser “reentrantes”, es decir, la función siempre debe producir el mismo resultado con los mismos datos de entrada independientemente de que esté siendo ejecutada por otras hebras al mismo tiempo. Por lo tanto, las funciones deben estar programadas de tal forma que puedan ser ejecutadas por varias hebras simultáneamente.
El acceso a recursos (variables en su mayor parte) debe estar regulado de manera que no se produzcan conflictos entre las hebras ejecutándose paralelamente.
Apache 2 puede ejecutar solicitudes como un proceso propio o en un modelo mixto formado por procesos y hebras. El MPM “prefork” se ocupa de la ejecución en forma de proceso y el MPM “worker” de la ejecución como hebra. Durante la instalación es posible indicar qué MPM desea utilizar (ver Sección 30.5, “Instalación”). El tercer modo perchild aún se encuentra en una fase experimental y por eso (todavía) no se incluye en la instalación de SUSE LINUX.