我的程序的基本功能:创建计数器数(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]传递给工作线程函数。
答案 0 :(得分:2)
使用
(void *) i
pthread_create中的
然后
int i = (int) arg
答案 1 :(得分:1)
int n = (int)arg;
在你的worker_thread函数中。
和
(void*)i
而不是你线程中的&i