一个linux的线程问题,,比如说要创建3个线程,他们的执行顺序必须是1-2-3,是不是直接 pt

发布网友 发布时间:2022-04-24 03:16

我来回答

1个回答

热心网友 时间:2023-10-24 07:30

肯定不行,主线程第一次循环完后,就多了一个线程,这是是执行新创建的线程还是主线程,是没有强制要求的,多以你要认为它是随进的,即可能继续创建一个线程,也可能去执行新线程。这是有调度算法决定的,而且不同的系统,相同系统的不同版本都是不一样的。如果你是想用pthread_jion()的话可以这样:
int pid;
for(int i=0;i<3;i++)
{
pid = pthread_create(&t[i],null,f,j);

pthread_jion(pid,NULL);

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

热心网友 时间:2023-10-24 07:30

肯定不行,主线程第一次循环完后,就多了一个线程,这是是执行新创建的线程还是主线程,是没有强制要求的,多以你要认为它是随进的,即可能继续创建一个线程,也可能去执行新线程。这是有调度算法决定的,而且不同的系统,相同系统的不同版本都是不一样的。如果你是想用pthread_jion()的话可以这样:
int pid;
for(int i=0;i<3;i++)
{
pid = pthread_create(&t[i],null,f,j);

pthread_jion(pid,NULL);

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

热心网友 时间:2023-10-24 07:30

肯定不行,主线程第一次循环完后,就多了一个线程,这是是执行新创建的线程还是主线程,是没有强制要求的,多以你要认为它是随进的,即可能继续创建一个线程,也可能去执行新线程。这是有调度算法决定的,而且不同的系统,相同系统的不同版本都是不一样的。如果你是想用pthread_jion()的话可以这样:
int pid;
for(int i=0;i<3;i++)
{
pid = pthread_create(&t[i],null,f,j);

pthread_jion(pid,NULL);

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com