diff options
author | Valentin Bartenev <vbart@nginx.com> | 2015-03-14 17:37:07 +0300 |
---|---|---|
committer | Valentin Bartenev <vbart@nginx.com> | 2015-03-14 17:37:07 +0300 |
commit | 305fc021db799c87d751f0f1f5e99afee7bb2b3b (patch) | |
tree | 8c3cf7a86f08ede19803a9f9beecb33cc0d9ebb3 /src/os/unix/ngx_thread.h | |
parent | 08e05a40422300a25e3b4e5b915592d7b2c41592 (diff) | |
download | nginx-305fc021db799c87d751f0f1f5e99afee7bb2b3b.tar.gz nginx-305fc021db799c87d751f0f1f5e99afee7bb2b3b.zip |
Thread pools implementation.
Diffstat (limited to 'src/os/unix/ngx_thread.h')
-rw-r--r-- | src/os/unix/ngx_thread.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/os/unix/ngx_thread.h b/src/os/unix/ngx_thread.h index 2077b3df6..9d5f72491 100644 --- a/src/os/unix/ngx_thread.h +++ b/src/os/unix/ngx_thread.h @@ -111,9 +111,61 @@ ngx_int_t ngx_cond_signal(ngx_cond_t *cv); #define ngx_thread_volatile +#if (NGX_THREADS) + +#include <pthread.h> + + +typedef pthread_mutex_t ngx_thread_mutex_t; + +ngx_int_t ngx_thread_mutex_create(ngx_thread_mutex_t *mtx, ngx_log_t *log); +ngx_int_t ngx_thread_mutex_destroy(ngx_thread_mutex_t *mtx, ngx_log_t *log); +ngx_int_t ngx_thread_mutex_lock(ngx_thread_mutex_t *mtx, ngx_log_t *log); +ngx_int_t ngx_thread_mutex_unlock(ngx_thread_mutex_t *mtx, ngx_log_t *log); + + +typedef pthread_cond_t ngx_thread_cond_t; + +ngx_int_t ngx_thread_cond_create(ngx_thread_cond_t *cond, ngx_log_t *log); +ngx_int_t ngx_thread_cond_destroy(ngx_thread_cond_t *cond, ngx_log_t *log); +ngx_int_t ngx_thread_cond_signal(ngx_thread_cond_t *cond, ngx_log_t *log); +ngx_int_t ngx_thread_cond_wait(ngx_thread_cond_t *cond, ngx_thread_mutex_t *mtx, + ngx_log_t *log); + + +#if (NGX_LINUX) + +typedef pid_t ngx_tid_t; +#define NGX_TID_T_FMT "%P" + +#elif (NGX_FREEBSD) + +typedef uint32_t ngx_tid_t; +#define NGX_TID_T_FMT "%uD" + +#elif (NGX_DARWIN) + +typedef uint64_t ngx_tid_t; +#define NGX_TID_T_FMT "%uA" + +#else + +typedef uint64_t ngx_tid_t; +#define NGX_TID_T_FMT "%uA" + +#endif + +ngx_tid_t ngx_thread_tid(void); + +#define ngx_log_tid ngx_thread_tid() + +#else + #define ngx_log_tid 0 #define NGX_TID_T_FMT "%d" +#endif + #define ngx_mutex_trylock(m) NGX_OK #define ngx_mutex_lock(m) #define ngx_mutex_unlock(m) |