У меня есть поток, работающий в фоновом режиме, который читает события с устройства ввода блокирующим образом, теперь, когда я выхожу из приложения, я хочу правильно очистить поток, но я не могу просто запустить pthread_join () потому что поток никогда не выйдет из-за блокирования ввода-вывода.
Как мне правильно решить эту ситуацию? Должен ли я отправить pthread_kill (theard, SIGIO) или pthread_kill (theard, SIGALRM), чтобы разбить блок? Является ли это даже правильным сигналом? Или есть другой способ разрешить эту ситуацию и позволить этому дочернему потоку выйти из блокирующего чтения?
В настоящее время немного озадачен, так как никто из моих поисков не нашел решения.
Это в Linux и использует pthreads.
Edit: я немного поигрался с SIGIO и SIGALRM, когда я не устанавливаю обработчик сигнала, они ломают блокирующий ввод-вывод, но выдают сообщение на консоли («I / O возможен»), но когда я устанавливаю обработчик сигнала, чтобы избежать этого сообщения, они больше не нарушают блокировку ввода-вывода, поэтому поток не завершается. Так что я вернулся к первому шагу.