Я учу потоки в C в ОС. Я не знаю, почему следующий код дает мне ошибку сегментации. Может ли кто-нибудь помочь мне здесь? Я также немного смущен тем, как pthread_join
использует свой аргумент void ** retval
. Какова его функция?
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *thread (void *vargp) {
int* arg = *((int*)vargp);
return (void*)arg;
}
int main () {
pthread_t tid;
int thread_arg = 0xDEADBEEF;
int *ret_value;
pthread_create(&tid, NULL, thread, &thread_arg);
pthread_join(tid, (void **)(&ret_value));
printf("%X\n", *ret_value);
return 0;
}