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
}

更多文章:
begin和start的区别(start与begin的区别)
2026年10月15日 09:20
vant官网中文(范特365 是韩国化妆品VANT36.5吗)
2026年10月15日 09:10
prison break(越狱(prison break)到底是在讲个什么)
2026年10月15日 06:50
c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)
2026年10月15日 06:40
十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)
2026年10月15日 06:10
programdata是什么文件(win7下ProgramData 文件夹是什么,里面的内容可以删吗)
2026年10月15日 04:50
502错误的网关(“502错误网关,服务器作为网关或代理,从上游服务器收到了无效的响应”怎么处理谁能帮我)
2026年10月15日 04:10





