У меня есть некоторая путаница в механизме указателя в примере многопоточности ниже в отмеченных строках, как один указатель превращается в двойной указатель
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *worker_thread(void *arg)
{
pthread_exit((void*)911); /// <-- HERE
}
int main()
{
int i;
pthread_t thread;
pthread_create(&thread, NULL, worker_thread, NULL);
pthread_join(thread, (void **)&i); /// <-- HERE
printf("%d\n",i); /// will print out 911
}
Во-вторых, если вместо числа ниже, если я хочу вернуть некоторое целочисленное значение, предположим, что я возьму переменную
int i = 911
в worker_thread
API и хочу вернуть i
с помощью pthread_exit()
API как это сделать и как получить через pthread_join()
API и каков механизм преобразования указателей из одинарных в двойные.
Задача ещё не решена.
Других решений пока нет …