On Thu, May 9, 2013 at 8:41 PM, Philip Martin <philip.mar...@wandisco.com> wrote: > Branko Čibej <br...@wandisco.com> writes: > >> On 09.05.2013 17:14, Ivan Zhakov wrote: >>>> Perhaps we have to look at the httpd code? >>>> >>> httpd doesn't create worker thread dynamically, so they can allocate >>> apr_thread_t in global pool. Also it has dedicated win32 mpm that uses >>> CreateThread Windows API directly. >> >> I'm beginning to think that we need a global thread pool object that's >> independent of actual connections, that we create at process startup and >> that contains its own root pool for creating new threads. > > I don't think that solves the problem. We have a loop calling > apr_thread_create so the pool passed to apr_thread_create has to be > cleared or destroyed. We can only do that when both: > > A: the call itself has finished > B: the new thread has started running > > The thread itself can't clear the pool (the current code) because that > doesn't guarantee A. We can't use a subpool (Ivan's patch) because that > doesn't guarantee B. > > I think we have to add some inter-thread communication and have the main > thread track the worker threads in some way. > Another way is to use OS call directly instead of using APR.
-- Ivan Zhakov CTO | VisualSVN | http://www.visualsvn.com