| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:linux系统下线程中的sum对吗
只看楼主 加入收藏
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
结帖率:82.35%
收藏
已结贴  问题点数:100 回复次数:5 
linux系统下线程中的sum对吗
#include<stdio.h>
#include<pthread.h>
int x=1,sum;
void sumx(void)
{
    int i = 0;
    x=1;
    for(i=0;i<100;i++)
     {
        sum=sum+x;
     }
    printf("%d %d %d\n",i,x,sum)
}
void sext(void)
{
    x=0;
}
int main(void)
{
      pthread_t id1,id2;
     int i,ret;
     ret = pthread_create(&id1,NULL,(void *)sumx,NULL);
     if(ret!=0)
    {
        printf("error");
        exit(1);
    }
       ret = pthread_create(&id2,NULL,(void *)setx,NULL);
     if(ret!=0)
    {
        printf("error");
        exit(1);
    }
      pthread_join(id1,NULL);
      pthread_join(id2,NULL);
     
     printf("%d",sum);
     return(0);
}

我多次得出的答案是i=100,x=1;sum=100
                  sum=100
请问对吗?
搜索更多相关主题的帖子: linux 
2011-04-30 09:11
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
我只会windows的多线程

                                         
===========深入<----------------->浅出============
2011-04-30 09:58
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
2011-04-30 11:26
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:100 
对的吧。你用的100太小了,没引发线程切换。
你在 sumx 里改个 10000 之类的数应该就有效果了。

另外你那个入口函数写的不太规范。那个函数的原型要求是 void * func(void *)
你如果参数没用的话,你可以随便写一个,然后返回 NULL.
比如你的 setx 可以写成:
void * setx(void *arg)
{
    x = 0;
    return NULL;
}
main 里就不用强转了:
ret = pthread_create(&id2, NULL, setx, NULL);
2011-04-30 12:15
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:0 
我加了10000000才有了变化啊
悲剧
2011-04-30 13:59
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
收藏
得分:0 
linux不懂
2011-04-30 14:34
快速回复:linux系统下线程中的sum对吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015274 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved