Mercurial > hg > nginx
comparison src/os/win32/ngx_process_cycle.c @ 3022:56407044c593
win32 cache loader support
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 11 Aug 2009 08:14:43 +0000 |
parents | cf1d868787a1 |
children | f9d97311c652 |
comparison
equal
deleted
inserted
replaced
3021:cf1d868787a1 | 3022:56407044c593 |
---|---|
23 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, char *mevn); | 23 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, char *mevn); |
24 static void ngx_worker_process_exit(ngx_cycle_t *cycle); | 24 static void ngx_worker_process_exit(ngx_cycle_t *cycle); |
25 static ngx_thread_value_t __stdcall ngx_worker_thread(void *data); | 25 static ngx_thread_value_t __stdcall ngx_worker_thread(void *data); |
26 static ngx_thread_value_t __stdcall ngx_cache_manager_thread(void *data); | 26 static ngx_thread_value_t __stdcall ngx_cache_manager_thread(void *data); |
27 static void ngx_cache_manager_process_handler(void); | 27 static void ngx_cache_manager_process_handler(void); |
28 static ngx_thread_value_t __stdcall ngx_cache_loader_thread(void *data); | |
28 | 29 |
29 | 30 |
30 ngx_uint_t ngx_process; | 31 ngx_uint_t ngx_process; |
31 ngx_pid_t ngx_pid; | 32 ngx_pid_t ngx_pid; |
32 ngx_uint_t ngx_threaded; | 33 ngx_uint_t ngx_threaded; |
665 if (ngx_create_thread(&wtid, ngx_worker_thread, NULL, log) != 0) { | 666 if (ngx_create_thread(&wtid, ngx_worker_thread, NULL, log) != 0) { |
666 goto failed; | 667 goto failed; |
667 } | 668 } |
668 | 669 |
669 if (ngx_create_thread(&cmtid, ngx_cache_manager_thread, NULL, log) != 0) { | 670 if (ngx_create_thread(&cmtid, ngx_cache_manager_thread, NULL, log) != 0) { |
671 goto failed; | |
672 } | |
673 | |
674 if (ngx_create_thread(&cmtid, ngx_cache_loader_thread, NULL, log) != 0) { | |
670 goto failed; | 675 goto failed; |
671 } | 676 } |
672 | 677 |
673 for ( ;; ) { | 678 for ( ;; ) { |
674 ev = WaitForMultipleObjects(3, events, 0, INFINITE); | 679 ev = WaitForMultipleObjects(3, events, 0, INFINITE); |
983 "cache manager WaitForSingleObject: %ul", ev); | 988 "cache manager WaitForSingleObject: %ul", ev); |
984 } | 989 } |
985 } | 990 } |
986 | 991 |
987 | 992 |
993 static ngx_thread_value_t __stdcall | |
994 ngx_cache_loader_thread(void *data) | |
995 { | |
996 ngx_uint_t i; | |
997 ngx_path_t **path; | |
998 ngx_cycle_t *cycle; | |
999 | |
1000 ngx_msleep(60000); | |
1001 | |
1002 cycle = (ngx_cycle_t *) ngx_cycle; | |
1003 | |
1004 path = cycle->pathes.elts; | |
1005 for (i = 0; i < cycle->pathes.nelts; i++) { | |
1006 | |
1007 if (ngx_terminate || ngx_quit) { | |
1008 break; | |
1009 } | |
1010 | |
1011 if (path[i]->loader) { | |
1012 path[i]->loader(path[i]->data); | |
1013 ngx_time_update(0, 0); | |
1014 } | |
1015 } | |
1016 | |
1017 return 0; | |
1018 } | |
1019 | |
1020 | |
988 void | 1021 void |
989 ngx_single_process_cycle(ngx_cycle_t *cycle) | 1022 ngx_single_process_cycle(ngx_cycle_t *cycle) |
990 { | 1023 { |
991 ngx_int_t i; | 1024 ngx_int_t i; |
992 ngx_tid_t tid; | 1025 ngx_tid_t tid; |