summaryrefslogtreecommitdiffhomepage
path: root/src/event/ngx_event_posted.c
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2014-09-01 18:20:18 +0400
committerValentin Bartenev <vbart@nginx.com>2014-09-01 18:20:18 +0400
commit37d24e7e3be648a6f73bad18dcf53798a7a1aeb0 (patch)
treeeaf9902b1117ec4a3cd905855c3e26c5825f3282 /src/event/ngx_event_posted.c
parent2a81e0556611188a1b9b3e1240a06928dcebc1a2 (diff)
downloadnginx-37d24e7e3be648a6f73bad18dcf53798a7a1aeb0.tar.gz
nginx-37d24e7e3be648a6f73bad18dcf53798a7a1aeb0.tar.bz2
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.
Diffstat (limited to 'src/event/ngx_event_posted.c')
-rw-r--r--src/event/ngx_event_posted.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
index 87e506d71..d851f3d14 100644
--- a/src/event/ngx_event_posted.c
+++ b/src/event/ngx_event_posted.c
@@ -10,26 +10,24 @@
#include <ngx_event.h>
-ngx_event_t *ngx_posted_accept_events;
-ngx_event_t *ngx_posted_events;
+ngx_queue_t ngx_posted_accept_events;
+ngx_queue_t ngx_posted_events;
void
-ngx_event_process_posted(ngx_cycle_t *cycle, ngx_event_t **posted)
+ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted)
{
+ ngx_queue_t *q;
ngx_event_t *ev;
- for ( ;; ) {
+ while (!ngx_queue_empty(posted)) {
- ev = *posted;
+ q = ngx_queue_head(posted);
+ ev = ngx_queue_data(q, ngx_event_t, queue);
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"posted event %p", ev);
- if (ev == NULL) {
- return;
- }
-
ngx_delete_posted_event(ev);
ev->handler(ev);