多线程pthread_join执行顺序。()

andy cong 2016-11-21 12:13:19



(最近初学多线程)
接下来请教两个问题:
1、当线程thread1对应那条语句(pthread_join(thread1,NULL))执行后,main主线程阻塞?,那么thread2是如何运行起来的呢??
打印hello world被阻塞了,thread2也应该被阻塞?这肯定是不对的,如果真这样,多线程就失去意义了。那thread2是靠谁运行起来的??
2、为什么thread2运行在thread1前面?? 程序运行的结果是不确定的么?(我运行多次,结果都是thread2在前面)
...全文
1355 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy cong 2016-12-01
  • 打赏
  • 举报
回复
好的。非常感谢你。
annhoo 2016-12-01
  • 打赏
  • 举报
回复
请研究一下setitimer()和signal()。可以精确控制线程的运行时间。 如果没有设置条件,是不能保证线程运行次序的,操作系统会自行随机安排了。
andy cong 2016-11-27
  • 打赏
  • 举报
回复 1
好的,非常感谢,很好解决了我的疑惑。 犯了个很low错误,pthread_join(thread2,NULL),线程thread2才执行。。对于问题2,还有一个疑惑,为什么thread1跟thread2不会交替执行呢???@annhoo
annhoo 2016-11-25
  • 打赏
  • 举报
回复
1.你的thread2是在thread_join前创建的。所以已经运行。 2.至于thread2先运行。这一般是操作系统的问题,如果想控制一般采用延时等其他方法。 注意:线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧