我正在通过向它们传递一个结构并遇到一些问题来创建pthreads。使用以下代码,我可以将一组整数放入结构中,然后在线程中使用它们:
struct v{
int i;
int j;
};
void* update(void* param);
int main(int argc, char* argv[]){
...
int j = 2;
int i = 1;
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
struct v *argument = (struct v*)malloc(sizeof(struct v));
argument->i = i;
argument->j = j;
pthread_create(&tid, &attr, update, argument);
...
pthread_join(tid, NULL);
return 0;
}
void* update(void* arg){
...
struct v * argument = (struct v*) arg;
int j = argument->j;
int i = argument->i;
cout << j << ' ' << i << endl;
}
不幸的是,我似乎无法将动态数组添加到结构中。我知道动态数组在 main() 之前声明的结构中不起作用,但即使使用指针,我似乎也无法编译代码。在 main() 中,我添加了以下几行:
int arr[i][j];
以下
argument->j = j;
我补充说:
argument.current = arr;
我将结构更改为:
struct v{
int i;
int j;
int *ray;
};
在更新功能中,我有:
int * curr = argument->ray;
当我编译时,我收到一条错误消息“在'argument'中请求成员'ray',它是非类类型'v *'”。
通过这种方式添加这个动态数组,我是否走错了路?
我感谢任何人可以提供的任何帮助。