std::thread::join()
имеет тип возврата void
, поэтому не может вернуть EINTR
. На платформах POSIX это, вероятно, обертка вокруг pthread_join
, которая не возвращает EINTR
. Присоединение к потоку не должно возвращать или выбрасывать до тех пор, пока поток не будет успешно присоединен к нему, при условии, что он вызывается для присоединяемого потока.
Кроме того, может быть небезопасно отменить поток из обработчика сигнала. std::thread
не имеет cancel()
функции-члена, поэтому я предполагаю, что вы написали свою собственную. Поэтому вам необходимо убедиться, что это безопасно для использования в обработчике сигналов --- pthread_cancel()
не указан в качестве функции, которую можно безопасно вызывать из обработчика сигналов , например.