我的代码有一些问题。我需要将一个int数组传递给线程,女巫将计算该数组每个int的^ 2。 我的代码:
#include <pthread.h> //etc.
#define SIZE 1024
static void * function_thread(void *arg){
int *loc = (int *)arg;
// i tried also int loc[SIZE] = (int *)arg; but won' compile ion' t know why
for (int i = 0; i < SIZE; i++) {
loc[i] = loc[i] * loc[i];
// tried also loc[i] = (*(int *)arg) * (*(int *)arg);
printf("loc[%d]^2 = %d\n",i, loc[i]);
}
return (void *)loc;
}
int main(int argc, char const *argv[]) {
int x[SIZE];
void (*res[SIZE]);
int y[SIZE];
for (int i = 0; i < SIZE; i++) {
x[i] = i;
}
pthread_t thread_1;
pthread_create(&thread_1,NULL,function_thread,x);
pthread_join(thread_1, &res);
for(int i = 0; i < SIZE; i++){
y[i] = res[i];
}
}
所以我有几个问题:
我已经看到
int x; int *结果; ... pthread_join(someThread,&result); x =结果+结果;
这行得通,但是为什么呢? x和结果类型不同吗?
感谢您的建议,祝您有美好的一天!