On Oct 30, 2005, at 2:09 PM, Peter Djalaliev wrote:

Hello,

I understand that a module registers its own functions for different hooks in order to introduce its own functionality at different points of a request handling. I also understand that the module can specify if it wants its function to be executed first, in the middle or last, with relation to other
modules' functions registered for the same hook.

When these functions are actually called, do they execute in the same
process and thread (if threads are used) as the process/thread handling the connection? For example, if the worker MPM module is used, a single thread
would handle a single connection. Would the mod_ssl code, for example,
execute within the thread for that connection?

Strictly speaking, there's no guarantee that a request will be
processed by one and only one thread.  It's possible for a
threaded MPM to hand off a request from one thread to another.
For example, the version of the Event MPM in 2.3 can run the
logger hook for a request in a different thread than the handler
hook.  (I think all of the MPMs in 2.0 happen to do all of the
processing of a request in the same thread, but that's more
an implementation detail than a design guarantee.)

What currently _is_ guaranteed, even in 2.3, is that at most
one thread at a time will process any given connection.  And,
as a corollary, at most one thread at a time will process any
given request.  (IMHO, this guarantee is one that we should
preserve in 2.4.)

Brian

Reply via email to