linux线程如何运行?

linux线程如何运行?,第1张

pthread_create执行后,如果执行成功会生成一个子线程 也就是现在有两个线程同时运行

父线程还会继续执行后面的代码 直到结束

子线程则开始执行thread函数体里的代码了 别的不执行

pthread_join会按照父线程执行顺序 到它了就会执行 该函数的作用是阻塞等待一个线程执行完毕

在你的代码里 不一定在子线程执行3次后才启动 也可能子线程没有执行呢 父线程就执行到pthread_join了 然后阻塞等待子线程

如果你想让pthread_join在子线程3次执行后才启动 可以让父线程sleep下 不过子线程执行完了 你再执行pthread_join也就没有什么意义了

不懂再问

肯定不行,主线程第一次循环完后,就多了一个线程,这是是执行新创建的线程还是主线程,是没有强制要求的,多以你要认为它是随进的,即可能继续创建一个线程,也可能去执行新线程。这是有调度算法决定的,而且不同的系统,相同系统的不同版本都是不一样的。如果你是想用pthread_jion()的话可以这样:

int pid

for(int i=0i<3i++)

{

pid = pthread_create(&t[i],null,f,j)

pthread_jion(pid,NULL)

}(这段代码我没有试验过哦,可能有错)

这样只有新建的线程执行完毕后,主线程才开始第二次循环,然后等第二个执行完毕。注意:如果新线程是里面有死循环那主线程就再也不可能执行了。所以这种方法是有很多弊端的,建议学习下《linux环境高级编程》的同步互斥那个章节,这样学习会系统一些。

希望对你有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8291269.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存