动态命名变量

时间:2014-05-09 07:15:08

标签: c variables

我正在创建n个线程。我想创建n个变量b1,b2,b3,。,bi,.. bn。 我怎么能在C中这样做?我的意思是根据线程的数量选择全局变量的名称。

感谢

2 个答案:

答案 0 :(得分:3)

取自 NapoleonBlownapart 对OP的评论:“你不能。变量名只存在于编译时,而线程只存在于运行时。

使用数组,包含与线程一样多的元素。然后使用线程的编号作为arrary的索引

请参阅下面的一些伪代码:

#define THREAD_MAXIMUM (42)

int b[THREAD_MAXIMUM];


thread_func(void * pv)
{
  size_t i = (size_t) pv;

  int bi = b[i];
  ...
}

int main()
{
  ...

  for(size_t i = 0; i < THREAD_MAXIMUM; ++i)
  {
     b[i] = some thread specific number;
     create-thread(thread_func, i) /* create thread and pass index to array element);
  }

  ...
}

答案 1 :(得分:1)

您可以尝试使用数组或向量(在C ++中)。我更喜欢用C ++编写代码而不是C和数组。

使用数组进行简单实现可以如下 -

#define MAX_THREAD(100)

int var[MAX_THREAD]

ThreadImpl(Params)
{
 int i = (int) Params;

 int vari = var[i];
}

int main()
{
  for(int i = 0; i < MAX_THREAD; ++i)
  {
    var[i] = val; (val can be ThreadID or other value as per requirement)     
    pthread_create(ThreadImpl, ... other params);
  }

 return 0;
}