linux创建线程程序段错误 编译没有错 运行显示段错误

linux创建线程程序段错误 编译没有错 运行显示段错误,第1张

正确用法:

pthread_t mythd

if(0!=pthread_create(&mythd,0,threadTest,0))printf("create error\n")

pthread_create函数建立线程,并将新建线程ID保存到mythd中。

如果将新建线程ID向地址0保存,会发生越界错误。

while((p=fork())==-1)//创建进程

if(p==0)

{

ret=pthread_create(&id1,NULL,(void *)pthread1, NULL)//创建线程

if(ret!=0) perror("线程1创建失败")

ret=pthread_create(&id2,NULL,(void *)pthread2, NULL)

if(ret!=0) perror("线程2创建失败")

ret=pthread_create(&id3,NULL,(void *)pthread3, NULL)

if(ret!=0) perror("线程3创建失败")

......

pthread_join(id1,NULL)

pthread_join(id2,NULL)

pthread_join(id3,NULL)

..........//结束线程

exit(0)

}

void pthread1(void *arg)

{

while(time(NULL) <time_flag) //可以在这里判断总接入次数,现在是时间判断

{

if(pthread_mutex_lock(&mutex)!=0)//锁定数据 可以在这里判断接入次数,现在是写锁定判断

{

perror("锁定失败")

}

else printf("线程1:锁定数据量\n")

{

}

if(pthread_mutex_unlock(&mutex)!=0) //数据解锁 这里可以判断不超过3次锁定解锁

{

perror("解锁失败")

}

else

printf("线程1:我已解锁\n")

sleep(4)

}

}

其他的你自己补充吧,自己定义几个全局变量控制线程锁定解锁逻辑关系就行


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6236723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存