comparison src/event/ngx_event.c @ 5821:3f5f0ab59b35

Events: processing of posted events changed from LIFO to FIFO. In theory, this can provide a bit better distribution of latencies. Also it simplifies the code, since ngx_queue_t is now used instead of custom implementation.
author Valentin Bartenev <vbart@nginx.com>
date Mon, 01 Sep 2014 18:20:18 +0400
parents 3377f9459e99
children 457ec43dd8d5
comparison
equal deleted inserted replaced
5820:3377f9459e99 5821:3f5f0ab59b35
250 delta = ngx_current_msec - delta; 250 delta = ngx_current_msec - delta;
251 251
252 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, 252 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
253 "timer delta: %M", delta); 253 "timer delta: %M", delta);
254 254
255 if (ngx_posted_accept_events) { 255 ngx_event_process_posted(cycle, &ngx_posted_accept_events);
256 ngx_event_process_posted(cycle, &ngx_posted_accept_events);
257 }
258 256
259 if (ngx_accept_mutex_held) { 257 if (ngx_accept_mutex_held) {
260 ngx_shmtx_unlock(&ngx_accept_mutex); 258 ngx_shmtx_unlock(&ngx_accept_mutex);
261 } 259 }
262 260
263 if (delta) { 261 if (delta) {
264 ngx_event_expire_timers(); 262 ngx_event_expire_timers();
265 } 263 }
266 264
267 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, 265 ngx_event_process_posted(cycle, &ngx_posted_events);
268 "posted events %p", ngx_posted_events);
269
270 if (ngx_posted_events) {
271 ngx_event_process_posted(cycle, &ngx_posted_events);
272 }
273 } 266 }
274 267
275 268
276 ngx_int_t 269 ngx_int_t
277 ngx_handle_read_event(ngx_event_t *rev, ngx_uint_t flags) 270 ngx_handle_read_event(ngx_event_t *rev, ngx_uint_t flags)
609 */ 602 */
610 603
611 ngx_use_accept_mutex = 0; 604 ngx_use_accept_mutex = 0;
612 605
613 #endif 606 #endif
607
608 ngx_queue_init(&ngx_posted_accept_events);
609 ngx_queue_init(&ngx_posted_events);
614 610
615 if (ngx_event_timer_init(cycle->log) == NGX_ERROR) { 611 if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
616 return NGX_ERROR; 612 return NGX_ERROR;
617 } 613 }
618 614