| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 268 人关注过本帖
标题:关于输出结果的一些疑问(有关线程)
取消只看楼主 加入收藏
钓鱼执法
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-17
结帖率:0
收藏
 问题点数:0 回复次数:0 
关于输出结果的一些疑问(有关线程)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <pthread.h>

#define NT         16

pthread_mutex_t  mutt;

#define A   3
#define B   4
#define C   5

int answer = 0;

void *worker(int *p);

int main(int arg, char *argv[])
{
  pthread_t thid[NT];
  int id[NT];
  int i;

  for(i=0;i<NT;i++)
    id[i] = i;

  pthread_mutex_init(&mutt, 0);

  for(i=0;i<NT;i++)
    pthread_create(&thid[i], 0, (void *) worker, (void *) &id[i]);

   for(i=0;i<NT;i++)
     pthread_join(thid[i], 0);

  printf("%d\n", answer);
}
void *worker(int *p)
{
  int tmp;
  int id;

  id = *p;
  if(id == 0){  /* adder */
    //tmp = answer;                                                                                                                                                                                                                                                           
    printf("%d\n",id);
    tmp = answer + C;
    answer = tmp;
  } else {
    printf("%d\n",id);
    tmp = A;
    tmp = tmp * B;
    answer = tmp;
  }
  return;
}
下面是输出结果
*********1
0
2
3
4
7
8
6
5
10
9
11
12
13
14
15
12
我在worker函数中每次都输出变量id,但是为什么输出结果不是0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15?谢谢大家了
搜索更多相关主题的帖子: include 
2015-02-01 14:24
快速回复:关于输出结果的一些疑问(有关线程)
数据加载中...
 
   



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

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