我正在创建n个线程。我想创建n个变量b1,b2,b3,。,bi,.. bn。 我怎么能在C中这样做?我的意思是根据线程的数量选择全局变量的名称。
感谢
答案 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;
}