В многопоточной программе Linux, используемой для последовательной связи, возможно ли (и какой будет лучший подход) прекратить вызов блокировки read() из другого потока?Linux, отменить блокировку read()
Я хотел бы сохранить все как можно более реактивным и избежать использования тайм-аутов с повторным опросом.
Основой этого вопроса является то, что я пытаюсь создать библиотеку последовательной связи Scala для Linux с использованием JNI. Я пытаюсь сохранить родную сторону максимально простой, обеспечивая, среди прочего, функцию read() и close(). На стороне Scala один поток будет вызывать read() и блокировать до тех пор, пока не будут доступны данные из последовательного порта. Тем не менее, последовательный порт может быть закрыт другими способами, что приведет к вызову close(). Теперь, чтобы освободить заблокированный поток, мне как-то нужно будет отменить вызов для чтения системы.
Связанный: https://stackoverflow.com/questions/384391/how-to-signal-select-to-return-immediately –