所以我有一个结构如下:
struct threadData{
string filename
int one;
int two;
};
我创建了这样的结构数组:
pthread_t threadID[5];
struct threadData *threadP;
threadP = new struct threadData[5];
然后我将这个结构数组传递给一个线程函数,如下所示:
for(int i = 0; i < 5; i++){
pthread_create(&threadID[i], NULL, threadFunction, (void * ) threadP[i]);
}
这就是我的threadFunction的编写方式:
void *threadFunction(void * threadP[]){
}
我尝试了各种各样的东西,但是我总是得到错误,我传入的内容不正确,我该如何正确地执行此操作以便我可以访问和处理我传入的每个struct对象中的变量?我有一种感觉,我的语法在某处错了,因为我使用了一组结构...我只是不知道哪里或哪些是错的。任何帮助将不胜感激!
答案 0 :(得分:1)
void *threadFunction(void * threadP[]){
函数不能在C ++中包含数组类型的参数,而是参数必须是指针,并且用作函数参数的数组会衰减到指向第一个元素的指针,因此该声明等效于:
void *threadFunction(void ** threadP){
这显然不是传递给pthread_create
您需要传递具有此签名的函数:
void *threadFunction(void * threadP)