apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <wr...@rowe-clan.net>
Subject Re: Thread pool prototype
Date Tue, 02 May 2006 01:03:26 GMT
Henry Jen wrote:
> William A. Rowe, Jr. wrote:
> 
>> Henry Jen wrote:
> 
>>> In a way they work the same. But there are a few interesting 
>>> differences:
>>>
>>> 1. Set the unused max does not force the thread to stop, an unused 
>>> thread kills itself when it becomes idle and realize there are enough 
>>> idle threads. Thus no joining or any locking issue for using this 
>>> function.
>>
>> Is it reasonable to do a quick reap when max() is adjusted?  E.g. if the
>> freecount > max then call reap?
> 
> Reasonable. Might not be optimal, but makes more sense. I feel it's kind 
> of like async and sync debate.

By jove I think I've got it...

adjust max() as planned.  Don't reap.  Drop stop_unused_threads, and in it's
place, add an apr_thread_pool_idle_maintenance() function, which promises to
either ramp up free threads if below the free thread min() threshold, or ask
some threads to die if above free thread max() threshold.

The easiest way to kill is to scedule a noop() work assignment to the waiting
thread, and when noop() exits, it counts threads and decides it's time for it's
death.

Bill

Mime
View raw message