auto/threads脚本分析-part14
本节我们介绍auto/threads脚本,其主要用于线程相关的配置。
auto/threads脚本
脚本内容如下:
下面进行脚本分析:
在auto/options中,USE_THREADS
默认会被初始化为NO
,我们可以通过--with-threads
选项来启用。
如果USE_THREADS
值为YES
,接着判断是否为win32平台。如果是,则打印相关信息退出;否则执行如下:
首先向objs/ngx_auto_config.h头文件中写入相关宏定义,然后再把相应的源代码文件包含到CORE_DEPS
和CORE_SRCS
中:
THREAD_POOL_DEPS=src/core/ngx_thread_pool.h THREAD_POOL_SRCS="src/core/ngx_thread_pool.c src/os/unix/ngx_thread_cond.c src/os/unix/ngx_thread_mutex.c src/os/unix/ngx_thread_id.c"
上述是在auto/sources脚本中定义的。
注意: 虽然nginx整体上是一个异步、事件驱动的框架。但是很多第三方模块使用了阻塞调用;即使在当前官方的NGINX代码中,依然无法在全部场景中避免使用阻塞,Nginx1.7.11中实现的线程池机制解决了这个问题。