📄 ngx_thread.h
字号:
/* * Copyright (C) Igor Sysoev */#ifndef _NGX_THREAD_H_INCLUDED_#define _NGX_THREAD_H_INCLUDED_#include <ngx_config.h>#include <ngx_core.h>#if (NGX_THREADS)#define NGX_MAX_THREADS 128#if (NGX_USE_RFORK)#include <ngx_freebsd_rfork_thread.h>#else /* use pthreads */#include <pthread.h>typedef pthread_t ngx_tid_t;#define ngx_thread_self() pthread_self()#define ngx_log_tid (int) ngx_thread_self()#if (NGX_FREEBSD) && !(NGX_LINUXTHREADS)#define NGX_TID_T_FMT "%p"#else#define NGX_TID_T_FMT "%d"#endiftypedef pthread_key_t ngx_tls_key_t;#define ngx_thread_key_create(key) pthread_key_create(key, NULL)#define ngx_thread_key_create_n "pthread_key_create()"#define ngx_thread_set_tls pthread_setspecific#define ngx_thread_set_tls_n "pthread_setspecific()"#define ngx_thread_get_tls pthread_getspecific#define NGX_MUTEX_LIGHT 0typedef struct { pthread_mutex_t mutex; ngx_log_t *log;} ngx_mutex_t;typedef struct { pthread_cond_t cond; ngx_log_t *log;} ngx_cond_t;#define ngx_thread_sigmask pthread_sigmask#define ngx_thread_sigmask_n "pthread_sigmask()"#define ngx_thread_join(t, p) pthread_join(t, p)#define ngx_setthrtitle(n)ngx_int_t ngx_mutex_trylock(ngx_mutex_t *m);void ngx_mutex_lock(ngx_mutex_t *m);void ngx_mutex_unlock(ngx_mutex_t *m);#endif#define ngx_thread_volatile volatiletypedef struct { ngx_tid_t tid; ngx_cond_t *cv; ngx_uint_t state;} ngx_thread_t;#define NGX_THREAD_FREE 1#define NGX_THREAD_BUSY 2#define NGX_THREAD_EXIT 3#define NGX_THREAD_DONE 4extern ngx_int_t ngx_threads_n;extern volatile ngx_thread_t ngx_threads[NGX_MAX_THREADS];typedef void * ngx_thread_value_t;ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle);ngx_err_t ngx_create_thread(ngx_tid_t *tid, ngx_thread_value_t (*func)(void *arg), void *arg, ngx_log_t *log);ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags);void ngx_mutex_destroy(ngx_mutex_t *m);ngx_cond_t *ngx_cond_init(ngx_log_t *log);void ngx_cond_destroy(ngx_cond_t *cv);ngx_int_t ngx_cond_wait(ngx_cond_t *cv, ngx_mutex_t *m);ngx_int_t ngx_cond_signal(ngx_cond_t *cv);#else /* !NGX_THREADS */#define ngx_thread_volatile#define ngx_log_tid 0#define NGX_TID_T_FMT "%d"#define ngx_mutex_trylock(m) NGX_OK#define ngx_mutex_lock(m)#define ngx_mutex_unlock(m)#define ngx_cond_signal(cv)#define ngx_thread_main() 1#endif#endif /* _NGX_THREAD_H_INCLUDED_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -