Mercurial > hg > nginx
diff src/event/ngx_event_posted.c @ 374:213f17e9f776
nginx-0.0.7-2004-07-02-09:47:00 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 02 Jul 2004 05:47:00 +0000 |
parents | 018569a8f09c |
children | 744ccb59062d |
line wrap: on
line diff
--- a/src/event/ngx_event_posted.c +++ b/src/event/ngx_event_posted.c @@ -76,6 +76,10 @@ ngx_int_t ngx_event_thread_process_poste return NGX_OK; } + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "posted event lock:%d " PTR_FMT, + *(ev->lock), ev->lock); + if (ngx_trylock(ev->lock) == 0) { ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, @@ -107,23 +111,31 @@ ngx_int_t ngx_event_thread_process_poste continue; } - ngx_mutex_unlock(ngx_posted_events_mutex); + ev->locked = 1; if (ev->posted) { + ev->ready = ev->posted_ready; + ev->timedout = ev->posted_timedout; + ev->available = ev->posted_available; + ev->kq_eof = ev->posted_eof; +#if (HAVE_KQUEUE) + ev->kq_errno = ev->posted_errno; +#endif ev->posted = 0; - if (!ev->timedout) { - ev->ready = 1; - } } + ngx_mutex_unlock(ngx_posted_events_mutex); + ev->event_handler(ev); - ngx_unlock(ev->lock); - if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { return NGX_ERROR; } + if (ev->locked) { + ngx_unlock(ev->lock); + } + break; } }