在 C 中创建线程并为函数提供参数
Creating threads and providing argument to the function in C
我目前正在创建线程,我想打印出我创建的每个线程的 "thread number"。例如:
void* thread_function(void* arg){
printf("This is thread # %d\n", *(int*)arg);
return NULL;
}
pthread_t id;
int main()
for(int i = 0; i< 5; i++){
pthread_create(&id, NULL, thread_function, &i);
}
//do some other stuff
return 0;
}
所以基本上,对于第一个线程,我希望它说:
This is thread # 0
然而,出于某种原因,它给了我像
这样的随机数
This is thread # -56465645645
我该如何解决这个问题?
您将 指针传递给 i
,它将在退出 for
循环后消失,而不是 的值i
.
尝试在函数 main()
中使用 (void*)i
而不是 &i
和
在函数 thread_function()
.
中传递 (int)arg
而不是 *(int*)arg
(指针和整数之间的转换是实现定义的)
我目前正在创建线程,我想打印出我创建的每个线程的 "thread number"。例如:
void* thread_function(void* arg){
printf("This is thread # %d\n", *(int*)arg);
return NULL;
}
pthread_t id;
int main()
for(int i = 0; i< 5; i++){
pthread_create(&id, NULL, thread_function, &i);
}
//do some other stuff
return 0;
}
所以基本上,对于第一个线程,我希望它说:
This is thread # 0
然而,出于某种原因,它给了我像
这样的随机数This is thread # -56465645645
我该如何解决这个问题?
您将 指针传递给 i
,它将在退出 for
循环后消失,而不是 的值i
.
尝试在函数 main()
中使用 (void*)i
而不是 &i
和
在函数 thread_function()
.
(int)arg
而不是 *(int*)arg
(指针和整数之间的转换是实现定义的)