
父线程还会继续执行后面的代码 直到结束
子线程则开始执行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环境高级编程》的同步互斥那个章节,这样学习会系统一些。
希望对你有帮助。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)