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;