Новое в 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;
}
зовет free(arg);
в main
после нереста нити такой же вещь/безопасно?
BTW. Хотите ли вы, чтобы 2 'pthread_create()' вызывал внутри цикла 'for()'? – chux