C线程参数

时间:2011-04-29 12:44:38

标签: c pointers pthreads

我的程序的基本功能:创建计数器数(0),创建每个线程的指令数,创建包含计数器*,重复和work_fn(增量,减量等)的结构指令。 程序将构建所有动态结构(已编码) 然后产生线程并加入。一个线程可以有多个指令。

static void* worker_thread(void *arg){
  long long *n;
  pthread_mutex_lock( &lock1 );

  n = (long long *) arg;
  printf("Testing: %lld.\n", n);

  pthread_mutex_unlock( &lock1 );

  return NULL;
}

//nthreads is the total number of threads

for(int i=0; i < nthreads ; i++){
  pthread_create( &thread_id[i], NULL, worker_thread, &i); //Problem
}


for(int i=0; i < nthreads ; i++){
  pthread_join( thread_id[i], NULL);
}

我正在尝试测试线程函数,首先创建线程数然后加入它们。 但我似乎无法将当前的线程号[i]传递给工作线程函数。

2 个答案:

答案 0 :(得分:2)

使用

(void *) i
pthread_create中的

然后

int i = (int) arg

答案 1 :(得分:1)

int n = (int)arg;

在你的worker_thread函数中。

(void*)i

而不是你线程中的&i