可以解释一下以下程序的输出(使用linux中的gcc(GCC)4.6.3版本编译):
void * thread_routine (void *p)
{
printf("Inside thread : Hello World!\n");
pthread_exit(NULL);
}
int main ()
{
// Object to hold thread ID
pthread_t thread;
int rv,*exit;
// Routine shell create a new thread
rv = pthread_create(&thread, NULL, thread_routine, NULL);
if(rv)
puts("Failed to create thread");
printf("Exit Main\n");
return 0;
}
输出:
Exit Main
Inside thread : Hello World!
Inside thread : Hello World!
我在想thread_routine()
将不会有机会安排在哪个主将返回之前。但产出不同。即使正在调度thread_routine,也应该打印Inside thread : Hello World!
一次。但它打印了两次。
如果我在pthread_self()
内的printf
语句中添加thread_routine()
,则此线程未被调度,在这种情况下输出为:
Exit Main