Для начала, если вы вызываете вышеуказанную функцию с помощью pthreads, у вас, вероятно, возникнут некоторые проблемы.Сигнатура указателя функции, переданного в pthread_create
, должна быть void * functionname(void*)
, то есть это должна быть функция, которая принимает один указатель на аргумент void и возвращает указатель на void.
К счастью, void*
можно привести к и от int
с относительно небольшой болью, поэтому возврат вашей функции может выглядеть следующим образом:
return (void*) 5;
Получение этого возвращаемого значения немного большеучаствует.Вы правы в том, что запутались в продолжении темы после возврата;ты не можешьТо, что вы хотите сделать, это соединить с потоком, который просто ждет, пока поток не вернется.Как только это будет сделано, вы можете перезапустить поток, как вы делали раньше.
pthread_t mythread;
int result;
while(1){
pthread_create(&mythread, NULL, mySuperThread, NULL);
pthread_join(mythread, &result);
/* do something with result */
}