Я полагаю, что вы хотели бы выйти из рабочего потока с помощью сигнализации из основного потока.
Внутри AcceptLoop
вместо того, чтобы бесконечно зацикливаться, вы зацикливаете условие, вы можете установить условие через основной поток. Вам придется использовать некоторую синхронизацию для этой переменной. Как только переменная будет установлена из основного потока, рабочий поток AcceptLoop
прервется, и вы сможете вызвать pthread_exit
.
если вы хотите, чтобы ваш основной поток ожидал выхода дочернего потока, вы можете использовать pthread_join
для этого.
В общем случае дочерний поток может завершиться в трех условиях:
- звонит
pthread_exit
.
- звонит
pthread_cancel
.
- Функция потока возвращает.