问题描述
- 关于主线程子线程运行顺序的疑惑
- 这里是书上截得一段程序,我不明白!
这是运行结果:
为什么运行结果一开始是waiting for thread to finish也就是主线程先跑的。
为什么一开始不是子线程先跑?
求大神解答
解决方案
因为pthread_join的存在,join使得主线程和子线程同步,主线程阻塞住等待子线程运行完。
不同语言略有差异,但是基本上都是类似的,找一篇文章你看下
http://blog.csdn.net/hmk2011/article/details/6289151
解决方案二:
线程创建后,多个线程谁在占有CPU是不确定的,所以可能先进主线程的wait,后进线程thread_funtion
解决方案三:
wait finish和running的顺序不确定,但是肯定是先执行完子线程才执行joined。
解决方案四:
单cpu上主线程先执行的概率大一些,因为和20ms的时间片相比,一条语句的执行几乎不花时间,很偶然地,执行完创建线程,时间片用完,先执行子线程。
时间: 2024-08-08 04:23:46