comparison src/core/ngx_file.c @ 3035:f9d97311c652

*) share temporary number between workers *) randomize collision offset
author Igor Sysoev <igor@sysoev.ru>
date Fri, 21 Aug 2009 09:06:35 +0000
parents d7f7aabe5ac2
children 5fae6f9085e1
comparison
equal deleted inserted replaced
3034:d7f7aabe5ac2 3035:f9d97311c652
6 6
7 #include <ngx_config.h> 7 #include <ngx_config.h>
8 #include <ngx_core.h> 8 #include <ngx_core.h>
9 9
10 10
11 static ngx_atomic_uint_t ngx_temp_number; 11 static ngx_atomic_t temp_number = 0;
12 static ngx_atomic_uint_t ngx_random_number; 12 ngx_atomic_t *ngx_temp_number = &temp_number;
13 ngx_atomic_int_t ngx_random_number = 123456;
13 14
14 15
15 ssize_t 16 ssize_t
16 ngx_write_chain_to_temp_file(ngx_temp_file_t *tf, ngx_chain_t *chain) 17 ngx_write_chain_to_temp_file(ngx_temp_file_t *tf, ngx_chain_t *chain)
17 { 18 {
203 204
204 return 0; 205 return 0;
205 } 206 }
206 207
207 208
208 void
209 ngx_init_temp_number(void)
210 {
211 ngx_temp_number = 0;
212 ngx_random_number = 123456;
213 }
214
215
216 ngx_atomic_uint_t 209 ngx_atomic_uint_t
217 ngx_next_temp_number(ngx_uint_t collision) 210 ngx_next_temp_number(ngx_uint_t collision)
218 { 211 {
219 if (collision) { 212 ngx_atomic_uint_t n, add;
220 ngx_temp_number += ngx_random_number; 213
221 } 214 add = collision ? ngx_random_number : 1;
222 215
223 return ngx_temp_number++; 216 n = ngx_atomic_fetch_add(ngx_temp_number, add);
217
218 return n + add;
224 } 219 }
225 220
226 221
227 char * 222 char *
228 ngx_conf_set_path_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) 223 ngx_conf_set_path_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)