changeset 3022:56407044c593

win32 cache loader support
author Igor Sysoev <igor@sysoev.ru>
date Tue, 11 Aug 2009 08:14:43 +0000
parents cf1d868787a1
children 7d5501988fe3
files src/os/win32/ngx_process_cycle.c
diffstat 1 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -25,6 +25,7 @@ static void ngx_worker_process_exit(ngx_
 static ngx_thread_value_t __stdcall ngx_worker_thread(void *data);
 static ngx_thread_value_t __stdcall ngx_cache_manager_thread(void *data);
 static void ngx_cache_manager_process_handler(void);
+static ngx_thread_value_t __stdcall ngx_cache_loader_thread(void *data);
 
 
 ngx_uint_t     ngx_process;
@@ -670,6 +671,10 @@ ngx_worker_process_cycle(ngx_cycle_t *cy
         goto failed;
     }
 
+    if (ngx_create_thread(&cmtid, ngx_cache_loader_thread, NULL, log) != 0) {
+        goto failed;
+    }
+
     for ( ;; ) {
         ev = WaitForMultipleObjects(3, events, 0, INFINITE);
 
@@ -985,6 +990,34 @@ ngx_cache_manager_process_handler(void)
 }
 
 
+static ngx_thread_value_t __stdcall
+ngx_cache_loader_thread(void *data)
+{
+    ngx_uint_t     i;
+    ngx_path_t   **path;
+    ngx_cycle_t   *cycle;
+
+    ngx_msleep(60000);
+
+    cycle = (ngx_cycle_t *) ngx_cycle;
+
+    path = cycle->pathes.elts;
+    for (i = 0; i < cycle->pathes.nelts; i++) {
+
+        if (ngx_terminate || ngx_quit) {
+            break;
+        }
+
+        if (path[i]->loader) {
+            path[i]->loader(path[i]->data);
+            ngx_time_update(0, 0);
+        }
+    }
+
+    return 0;
+}
+
+
 void
 ngx_single_process_cycle(ngx_cycle_t *cycle)
 {