У меня есть поток с именем mainloop
т.е.
int run_mainloop;
void* mainloop(void* param)
{
// local vars
// initialize local vars
while(run_mainloop)
{
// run mainloop
}
return 0;
}
Поток запускается функцией под названием client_open
, т.е.
int client_open()
{
run_mainloop = 1;
return pthread_create(&thread, NULL, mainloop, NULL);
}
Однако в mainloop
, если инициализация локальных переменных не удалась, мне нужно сообщить client_open
сразу при досрочном выходе.
pthread_join
не подходит, так как он будет блокироваться, и у меня не может быть блока client_open
.
Если бы пришлось немного подождать перед возвращением, все было бы в порядке.
Как я могу сделать это красиво, не используя pthread_join, который будет блокировать. Я хочу получить код возврата.