C新手,我正在阅读here关于如何正确地将参数传递给线程。如果这个参数需要传递给多个线程呢?我在哪里/如何使用free()
?你说:将参数传递给多个线程
void *foo(void *i) {
int a = *((int *) i);
while(1){
printf("foo running \n");
sleep(1);
}
}
void *bar(void *i) {
int a = *((int *) i);
while(1){
printf("bar running \n");
sleep(1);
}
}
int main() {
pthread_t threads[2];
int i;
for (i = 0; i < 2; i++) {
int *arg = malloc(sizeof(*arg));
if (arg == NULL) {
fprintf(stderr, "Couldn't allocate memory for thread arg.\n");
exit(1);
}
*arg = i;
pthread_create(&threads[0], NULL, foo, arg);
pthread_create(&threads[1], NULL, bar, arg);
}
for (i = 0; i < 2; i++){
pthread_join(threads[i],NULL);
}
return 0;
}
正在孕育线程同样的事情后,调用main
free(arg);
/安全吗?
顺便说一句。你想在'for()'循环中调用2'pthread_create()'吗? – chux