pthread_create()输出

时间:2016-04-23 10:43:00

标签: c multithreading pthreads

可以解释一下以下程序的输出(使用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

0 个答案:

没有答案