[30][10][单选]对于如下 C 语言程序
//program Hello/ void * p_th_Hello (void * sq { printf("Hello World %d, sq"; pthread_exit(0; } { int main(void { pthread_t p_tid[2]; int i, j; for(i = 0; i < 2; i++ { j = pthread_create(&p_tid[i], NULL, p_th_Hello, (void*i; if(j!= 0 printf("Error: thread create\n"; } exit(0; } } 上述程序经正确编译链接并运行成功后,下列哪一项结果是正确的?
Hello World 1 Hello World 0
Hello World 1 Hello World 2
Hello World
Hello World 0
答案
Hello World 1 Hello World 0
解析
创建一个新线程需要使用 pthread_create 函数,新创建的线程标识符作为函数值返回,根据题意,对于 0、1 时,线程是正常创建的,所以 printf 输出就是 2 个结果Hello World 0 Hello World 1,当创建一个线程时,它会打印一条消息,然后退出。这些不同信息交互的顺序是不确定的,并且可能在连续运行程序的情况下发生变化。故答案选择 A 选项。
转载请注明出处。