有如下 C 语言程序
void * th_f(void * arg) { printf("Hello World"); pthread_exit(0); } int main(void) { pthread_t tid; int st; st = pthread_create(&tid, NULL, th_f, NULL); if(st==0) printf("Oops,I can not create thread\n"); exit(NULL); }
针对上述程序,下列叙述中哪一个是正确的
程序运行中最多存在 1 个线程
程序运行中最多存在 2 个线程
程序运行中最多存在 3 个线程
程序运行中最多存在 4 个线程
答案
程序运行中最多存在 2 个线程
解析
分析如下:
- 初始时,只有主线程存在。
- 当 `pthread_create` 成功执行后,会创建一个新的线程来执行 `th_f` 函数,这时程序中存在主线程和新创建的线程,共计2个线程。
- `th_f` 函数中的 `pthread_exit(0)` 会导致该线程终止,但不会影响已经创建的线程计数;它只是让该线程结束,不再执行其他操作。
- 主线程随后执行 `exit(NULL)`,整个程序终止,所有线程随之结束。
因此,无论在哪一个时间点,该程序中最多同时存在主线程和由 `pthread_create` 创建的子线程,即最多存在 2 个线程。其他选项表明存在更多的线程,这在这个程序的上下文中并不正确。