Mercurial > hg > nginx
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) |