当前位置:  开发笔记 > 编程语言 > 正文

使用pthread_create创建的线程的输出未打印

如何解决《使用pthread_create创建的线程的输出未打印》经验,为你挑选了1个好方法。

我正在学习Tanenbaum的Modern Operating systems中的线程和POSIX线程.这是我正在尝试的一个例子:

#include 
#include 
#include 

void *print_hello(void *tid)
{
    printf("Hello..Greetings from thread %d\n",tid);
    pthread_exit(NULL);
}

int main()
{
    pthread_t threads[10];
    int status,i=0;

//  for(i=0;i<10;i++){
        printf("Creating thread %d\n",i);
        status = pthread_create(&threads[i],NULL,print_hello,(void*)i);

        if(status != 0){
            printf("Oops pthread_create returned error code %d\n",status);
            exit(-1);
        }
//  }
    exit(0);

}

输出是:

Creating thread 0

为什么不去我的start_routine,这是什么print_hello功能?这有什么不对?

提前致谢.



1> P.P...:

您的main()线程不会等待线程完成.因此,根据线程的调度,您可能会或可能不会看到print_hello线程的输出.当main()线程退出时,整个过程就会消失.

使用pthread_join()等待创建的线程完成或者只是使用退出仅主线程pthread_exit(0);代替exit(0).

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有