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