C语言多线程使用同一线程函数,传递的结构体参数会相互影响

jao 2017-12-15 09:06:39
结构参数均为局部变量。我希望达到的效果是每个子线程并行执行,相互不影响执行状态。

下面代码是在多线程中执行的:
线程二

pthread_t listid_thread[l_size];
for (int _i = 0; _i < l_size; _i++)
{
struct ListingInfos listing_infos;
//创建线程
int temp;
if ((temp = pthread_create(&listid_thread[_i], NULL, ListThread, &listing_infos)) != 0) {
printf("【%d】listid_thread【%d】创建失败!\n", cp, _i);
}
else {
printf("【%d】listid_thread【%d】被创建\n", cp, _i);
}

}
for (int _i = 0; _i < l_size; _i++)
{
/*等待线程结束*/
if (listid_thread[_i] != 0)
{
//pthread_join(listid_thread[_i], NULL);
pthread_detach(listid_thread[_i]);
printf("【%d】listid_thread【%d】已经结束\n", cp, _i);
}
}

以上代码是本身是在多线程,又会循环创建多线程,创建以下的线程
线程三

void *ListThread(void *arg)
{
struct ListingInfos *listing_infos;
listing_infos = (struct ListingInfos *)arg;
printf("【%d】listid_thread【%d】线程中获取ID:%d\n", listing_infos->cp, listing_infos->thread, listing_infos->Id);
...........
}


我期待的以上代码的打印结果为 每次的ID不一样,例如1、2、3,但是由于在线程三种执行时间较长,打印出来的结果不是期待的结果,例如:2、2、3

请问如何解决多线程中,不同线程之间的相互影响参数的问题
...全文
519 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxianbin 2017-12-16
  • 打赏
  • 举报
回复
listing_infos 也用数组
jao 2017-12-15
  • 打赏
  • 举报
回复
https://zhidao.baidu.com/question/1544052346526506627.html 我的问题答案已经在这里找到解决方法了

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧