加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 以单个Pthread打印

发布时间:2020-12-16 10:04:34 所属栏目:百科 来源:网络整理
导读:我正在尝试用C中的Pthreads实现一个程序.现在,我试图让一个线程打印一些东西: void * generator(void *arguments){ printf("Hi"); return NULL;}int main(int argc,const char* argv[]){ pthread_create(threads_ids[0],NULL,generator,NULL);=} 这不起作用
我正在尝试用C中的Pthreads实现一个程序.现在,我试图让一个线程打印一些东西:

void * generator(void *arguments){
     printf("Hi");
     return NULL;
}

int main(int argc,const char* argv[]){
     pthread_create(&threads_ids[0],NULL,&generator,NULL);=
}

这不起作用,不打印任何东西.但是,当我将pthread的创建放在for循环中时,它会打印“Hi”,但在每次执行时,该事件都会有所不同.

这是正常行为,如果是这样的话;我该怎么解决?提前致谢!

解决方法

这是因为你的主线程返回并因此退出进程.这意味着您创建的线程永远不会有机会运行.

与main()返回不同,从main()调用pthread_exit(0),将让另一个线程继续执行.

或者,您可以通过在您创建的线程上调用pthread_join()来等待线程完成执行.

当您在循环中执行时,您创建的某些线程可能会在主线程退出之前执行,因此看起来“工作”(打印一些Hi).但它确实存在与您发布的代码相同的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读