首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单线程打印

单线程打印
EN

Stack Overflow用户
提问于 2016-11-09 19:07:33
回答 1查看 653关注 0票数 3

我正在用C语言实现一个程序,现在,我尝试让一个线程打印"Hi":

代码语言:javascript
运行
复制
void * generator(void *arguments){
     printf("Hi");
     return NULL;
}

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

这不起作用,也不印任何东西。但是,当我将创建的线程放在for循环中时,它确实会打印"Hi",但是在每次执行时发生的情况是不同的。

这是正常的行为吗?如果是的话,我该如何解决呢?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-09 19:12:32

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

与仅仅从main()返回不同,从main()调用pthread_exit(0)将允许其他线程继续执行。

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

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40514240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档