summaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-08-21 09:06:35 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-08-21 09:06:35 +0000
commit3a58935936f3baca6bbccafc375c8f5656c5d39a (patch)
tree26b5ad8d59118ff077a8183b1e3d28121c0ad14f /src/core
parentf95847d0ba46a49df8d32d48b2585dac0090c0fb (diff)
downloadnginx-3a58935936f3baca6bbccafc375c8f5656c5d39a.tar.gz
nginx-3a58935936f3baca6bbccafc375c8f5656c5d39a.tar.bz2
*) share temporary number between workers
*) randomize collision offset
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ngx_file.c23
-rw-r--r--src/core/ngx_file.h5
2 files changed, 13 insertions, 15 deletions
diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c
index 3a489608a..45bb4ca4f 100644
--- a/src/core/ngx_file.c
+++ b/src/core/ngx_file.c
@@ -8,8 +8,9 @@
#include <ngx_core.h>
-static ngx_atomic_uint_t ngx_temp_number;
-static ngx_atomic_uint_t ngx_random_number;
+static ngx_atomic_t temp_number = 0;
+ngx_atomic_t *ngx_temp_number = &temp_number;
+ngx_atomic_int_t ngx_random_number = 123456;
ssize_t
@@ -205,22 +206,16 @@ ngx_create_full_path(u_char *dir, ngx_uint_t access)
}
-void
-ngx_init_temp_number(void)
-{
- ngx_temp_number = 0;
- ngx_random_number = 123456;
-}
-
-
ngx_atomic_uint_t
ngx_next_temp_number(ngx_uint_t collision)
{
- if (collision) {
- ngx_temp_number += ngx_random_number;
- }
+ ngx_atomic_uint_t n, add;
+
+ add = collision ? ngx_random_number : 1;
+
+ n = ngx_atomic_fetch_add(ngx_temp_number, add);
- return ngx_temp_number++;
+ return n + add;
}
diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h
index 0da8646eb..56315433b 100644
--- a/src/core/ngx_file.h
+++ b/src/core/ngx_file.h
@@ -129,7 +129,6 @@ ngx_int_t ngx_ext_rename_file(ngx_str_t *src, ngx_str_t *to,
ngx_int_t ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf);
ngx_int_t ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree);
-void ngx_init_temp_number(void);
ngx_atomic_uint_t ngx_next_temp_number(ngx_uint_t collision);
char *ngx_conf_set_path_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
@@ -138,4 +137,8 @@ char *ngx_conf_merge_path_value(ngx_conf_t *cf, ngx_path_t **path,
char *ngx_conf_set_access_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
+extern ngx_atomic_t *ngx_temp_number;
+extern ngx_atomic_int_t ngx_random_number;
+
+
#endif /* _NGX_FILE_H_INCLUDED_ */