将数组作为线程的参数传递

时间:2019-06-06 10:57:45

标签: c

我的代码有一些问题。我需要将一个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];
      }
}

所以我有几个问题:

  1. 线程功能中已经有问题吗?给我每个i loc [i] =0。这是什么问题?
  2. 为什么* int loc [SIZE] =(int *)arg初始化;不起作用?
  3. 我已经看到

    int x;   int *结果;   ...   pthread_join(someThread,&result);   x =结果+结果;

这行得通,但是为什么呢? x和结果类型不同吗?

感谢您的建议,祝您有美好的一天!

0 个答案:

没有答案