#ifdef ZTS
直接使用全局变量
#else
zend会使用一个global_id 为每个线程的全局变量创建一个副本
获取时会根据id-1为索引去get 类似数组的取值 ext_skel会帮我们生成好下面的宏:
- #ifdef ZTS
- # define MYEXTENSION_G(v) \
- (((zend_myextension_globals*)(*((void ***)tsrm_ls))[(myextension_globals_id)-1])->v)
- #else
- # define MYEXTENSION_G(v) (myextension_globals.v)
- #endif
tsrm宏: 后缀 c=call cc=call comma d=define dc=define comma
- #define TSRMLS_C tsrm_ls
- #define TSRMLS_D void *** tsrm_ls
- #define TSRMLS_CC ,tsrm_ls
- #define TSRMLS_DS ,void ***tsrm_ls //注意有个逗号
详情请移步鸟哥文章:http://www.laruence.com/2008/08/03/201.html