一个linux的线程问题,,比如说要创建3个线程,他们的执行顺序必须是1-2-3,是不是直接 pt 10
一个linux的线程问题,,比如说要创建3个线程,他们的执行顺序必须是1-2-3,是不是直接pthread_tt[3];for(inti=0;i<3;i++)pthrea...
一个linux的线程问题,,比如说要创建3个线程,他们的执行顺序必须是1-2-3,是不是直接
pthread_t t[3];
for(int i=0;i<3;i++)pthread_create(&t[i],null,f,j):就行了呢?还是要用jion啊,,如果用jion的话麻烦具体说下,感激不尽! 展开
pthread_t t[3];
for(int i=0;i<3;i++)pthread_create(&t[i],null,f,j):就行了呢?还是要用jion啊,,如果用jion的话麻烦具体说下,感激不尽! 展开
展开全部
肯定不行,主线程第一次循环完后,就多了一个线程,这是是执行新创建的线程还是主线程,是没有强制要求的,多以你要认为它是随进的,即可能继续创建一个线程,也可能去执行新线程。这是有调度算法决定的,而且不同的系统,相同系统的不同版本都是不一样的。如果你是想用pthread_jion()的话可以这样:
int pid;
for(int i=0;i<3;i++)
{
pid = pthread_create(&t[i],null,f,j);
pthread_jion(pid,NULL);
}(这段代码我没有试验过哦,可能有错)
这样只有新建的线程执行完毕后,主线程才开始第二次循环,然后等第二个执行完毕。注意:如果新线程是里面有死循环那主线程就再也不可能执行了。所以这种方法是有很多弊端的,建议学习下《linux环境高级编程》的同步互斥那个章节,这样学习会系统一些。
希望对你有帮助。
int pid;
for(int i=0;i<3;i++)
{
pid = pthread_create(&t[i],null,f,j);
pthread_jion(pid,NULL);
}(这段代码我没有试验过哦,可能有错)
这样只有新建的线程执行完毕后,主线程才开始第二次循环,然后等第二个执行完毕。注意:如果新线程是里面有死循环那主线程就再也不可能执行了。所以这种方法是有很多弊端的,建议学习下《linux环境高级编程》的同步互斥那个章节,这样学习会系统一些。
希望对你有帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询