C 动态命名变量
我正在创建n个线程。我想创建n个变量b1,b2,b3,,,bi,…bn。 我怎样才能用C来做这个?我的意思是根据线程的数量选择全局变量的名称 感谢您摘自的评论:“您不能。变量名只在编译时存在,而线程只在运行时存在。” 使用一个数组,数组中的元素数量与线程数量相同。然后使用线程的编号作为数组的索引 请参见下面的一些伪代码:C 动态命名变量,c,variables,C,Variables,我正在创建n个线程。我想创建n个变量b1,b2,b3,,,bi,…bn。 我怎样才能用C来做这个?我的意思是根据线程的数量选择全局变量的名称 感谢您摘自的评论:“您不能。变量名只在编译时存在,而线程只在运行时存在。” 使用一个数组,数组中的元素数量与线程数量相同。然后使用线程的编号作为数组的索引 请参见下面的一些伪代码: #define THREAD_MAXIMUM (42) int b[THREAD_MAXIMUM]; thread_func(void * pv) { size_t
#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);
}
...
}
#定义线程最大值(42)
int b[螺纹最大值];
线程函数(void*pv)
{
尺寸i=(尺寸)pv;
int bi=b[i];
...
}
int main()
{
...
对于(尺寸i=0;i<螺纹最大值;++i)
{
b[i]=某个特定于线程的编号;
创建线程(thread_func,i)/*创建线程并将索引传递给数组元素);
}
...
}
摘自的评论:“你不能。变量名只在编译时存在,而线程只在运行时存在。”
使用一个数组,数组中的元素数量与线程数量相同。然后使用线程的编号作为数组的索引
请参见下面的一些伪代码:
#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);
}
...
}
#定义线程最大值(42)
int b[螺纹最大值];
线程函数(void*pv)
{
尺寸i=(尺寸)pv;
int bi=b[i];
...
}
int main()
{
...
对于(尺寸i=0;i<螺纹最大值;++i)
{
b[i]=某个特定于线程的编号;
创建线程(thread_func,i)/*创建线程并将索引传递给数组元素);
}
...
}
您可以尝试使用数组或向量(在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;
}
#定义最大线程数(100)
int var[最大线程]
ThreadImpl(参数)
{
int i=(int)参数;
int vari=var[i];
}
int main()
{
对于(int i=0;i
您可以尝试使用数组或向量(在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;
}
#定义最大线程数(100)
int var[最大线程]
ThreadImpl(参数)
{
int i=(int)参数;
int vari=var[i];
}
int main()
{
对于(int i=0;i
你不能。变量名只在编译时存在,而线程只在运行时存在。正如其他人所说,通过使用每个线程一个元素的数组,可以获得类似的效果。变量名只在编译时存在,而线程只在运行时存在。正如其他人所说,使用每个线程一个元素的数组可以获得类似的效果哎呀。。。我认为C++。请看修改后的答案。谢谢你让我知道@D图C中没有向量;)哎呀。。。我认为C++。请看修改后的答案。谢谢你让我知道@德沃斯