pthread create(linux下如何使用pthread_create创建2线程)

本文目录
- linux下如何使用pthread_create创建2线程
- 循环中调用pthread_create
- pthread_create函数返回1,也就是说创建线程失败了,这是哪里有问题,麻烦各位帮忙一下
- pthread_create,传两个参数,在函数里面怎么设置
linux下如何使用pthread_create创建2线程
printf(“1\n“);
printf(“2\n“);
不可能不执行吧,除非你的程序其它地方有问题,比如juzhen1或juzhen2有问题,导致程序挂掉了
还有顺便说一句,你这个时间统计根本就是创建两个线程的所消耗的时间,而不是这两个线程执行的时间,如果你要统计这两个线程执行时间,你应该在
pthread_join(pid1, NULL);
pthread_join(pid2, NULL);
end=clock();
这样只有在两个线程执行完后才会执行end=clock();这一句
还有 pthread_t pid1, pid2这两句最好改成 pthread_t tid1, tid2;要学会良好的变量命名习惯,这样对你以后有好处。
循环中调用pthread_create
你无法确定哪个线程先运行
不如改成这样
void* foo(void * arg)
{
int flag = *(int *)arg;
printf(“flag = %d\n“, flag);
}
int main()
{
int i = 0;
pthread_t tid;
for (i=0; i《10;i++)
{
pthread_create(&tid, NULL, foo, (void *)&i);
pthread_join(tid[i], NULL);
}
return 0;
}
等上个线程函数退出再创建下一个
pthread_create函数返回1,也就是说创建线程失败了,这是哪里有问题,麻烦各位帮忙一下
我也碰到同样的问题,我把这一行pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED);//注释掉
就好了,而且attr中的属性值也设置到线程里去了。
如果不注释的话,就换成ROOT用户执行,因为修改线程调度策略需要超级用户。
pthread_create,传两个参数,在函数里面怎么设置
涉及多参数传递给线程的,都需要使用结构体将参数封装后,将结构体指针传给线程
定义一个结构体
struct mypara
{
var para1;//参数1
var para2;//参数2
}
将这个结构体指针,作为void *形参的实际参数传递
struct mypara pstru;
pthread_create(&ntid, NULL, thr_fn,& (pstru));
函数中需要定义一个mypara类型的结构指针来引用这个参数
void *thr_fn(void *arg)
{
mypara *pstru;
pstru = (* struct mypara) arg;
pstru-》para1;//参数1
pstru-》para2;//参数2
}

更多文章:
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00




