实现细节 这一小节分析TSRM一些算法的实现细节。因为整个TSRM涉及代码比较多,这里拣其中具有代表性的两个函数分析。 第一个值得注意的是tsrm_startup函数,这个函数在进程起始阶段被sapi调用,用于初始化TSRM的环境。由于tsrm_startup略长,这里摘录出我认为应该注意的地方: 复制代码 代码如下: /* Startup TSRM (call once for the entire process) */ TSRM_API int tsrm_startup(int expected_threads, int expected_resources, int debug_level, char *debug_filename) { /* code... */
tsrm_tls_table_size = expected_threads;
tsrm_tls_table = (tsrm_tls_entry **) calloc(tsrm_tls_table_size, sizeof(tsrm_tls_entry *)); if (!tsrm_tls_table) { TSRM_ERROR((TSRM_ERROR_LEVEL_ERROR, "Unable to allocate TLS table")); return 0; } id_count=0;