免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2507 | 回复: 6
打印 上一主题 下一主题

请教linux下多线程编程的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-21 19:35 |只看该作者 |倒序浏览
按照书中程序:
#include <iostream.h>
#include <pthread>
int sum,sum1,sum2;
void *task1(void *x)
{
for(int i=1;i<=100;i++)
{sum1=sum1+i;}
}

void *task2(void *x)
{
for(int j=1;j<=100;j++)
{sum2=sum2+j;}
}

int main()
{
pthread_t thread1,thread2;
pthread_create(&thread1,null,task1,null);
pthread_create(&thread2,null,task2,null);
pthread_join(thread1,null);
pthread_join(thread2,null);
sum=sum1+sum2;
cout<<sum<<endl;
}

运行能通过,但是如何把这个程序放在一个函数里运行呢,也就是说将两个循环累加和主函数内的线程声明放在一个函数内,这样该如何编译.

我用下面的方法运行出错:
#include <iostream.h>
#include <pthread>

int main()
{int sum1=0,sum2=0,sum;
  pthread_t thread1,thread2;
  int t;
  void *q=t;
  if(t=1)
  {
   for(int i=1;i<=100;i++)
   {sum1=sum1+i;}
  }

else if(t=2)
{
   for(int j=1;j<=100;j++)
   {sum2=sum2+j;}
}

pthread_create(&thread1,null,task1,null);
pthread_create(&thread2,null,task2,null);
pthread_join(thread1,null);
pthread_join(thread2,null);
sum=sum1+sum2;
cout<<sum<<endl;
}
无法运行,请问程序该怎么改才行?

论坛徽章:
0
2 [报告]
发表于 2007-02-21 22:34 |只看该作者
没看懂你想干什么,你给的第二段程序显然是错的,在有些平台上编译都不会通过

论坛徽章:
0
3 [报告]
发表于 2007-02-23 00:45 |只看该作者
我是想把代码都放在一个函数内,怎样才能编译通过,因为第一段代码是分三个函数

论坛徽章:
0
4 [报告]
发表于 2007-02-23 01:19 |只看该作者
为什么你要放到一个函数里?

论坛徽章:
0
5 [报告]
发表于 2007-02-23 10:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2007-02-26 16:27 |只看该作者
不知所云!

论坛徽章:
0
7 [报告]
发表于 2007-03-03 21:03 |只看该作者
回5楼:
就是在这个函数里将两个循环分配给两个线程来执行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP