This operation is checked in event... see the diffs for event.c
in that commit.

On Aug 29, 2014, at 10:28 AM, Ruediger Pluem <[email protected]> wrote:

> 
> 
> [email protected] wrote:
>> Author: jim
>> Date: Mon Nov 25 13:59:06 2013
>> New Revision: 1545286
>> 
>> URL: http://svn.apache.org/r1545286
>> Log:
>> Use a normalized offset point for idlers... still need to worry
>> that atomics work as "expected", in this case that a add32 of a -1
>> is the "same" as dec32 (as far as effect on idlers)
>> 
>> Modified:
>>    httpd/httpd/trunk/server/mpm/event/event.c
>>    httpd/httpd/trunk/server/mpm/event/fdqueue.c
>> 
> 
>> Modified: httpd/httpd/trunk/server/mpm/event/fdqueue.c
>> URL: 
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/fdqueue.c?rev=1545286&r1=1545285&r2=1545286&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/server/mpm/event/fdqueue.c (original)
>> +++ httpd/httpd/trunk/server/mpm/event/fdqueue.c Mon Nov 25 13:59:06 2013
> 
>> @@ -131,7 +128,7 @@ apr_status_t ap_queue_info_set_idle(fd_q
>> apr_status_t ap_queue_info_try_get_idler(fd_queue_info_t * queue_info)
>> {
>>     int prev_idlers;
>> -    prev_idlers = apr_atomic_dec32((apr_uint32_t *)&(queue_info->idlers));
>> +    prev_idlers = apr_atomic_add32((apr_uint32_t *)&(queue_info->idlers), 
>> -1) - zero_pt;
> 
> Is this correct? apr_atomic_add32 expects an uint as 2nd argument. I just 
> experienced a situation where all workers are
> idle, but queue_info->idlers < zero_pt.
> 
> Regards
> 
> Rüdiger
> 

Reply via email to