[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