При использовании Libevent для обнаружения чтения/записи готовности неблокирующего файловых дескрипторов диска (для файлов gaurded обязательной блокировки), я столкнулся следующий вопросом:Как использовать libevent для обнаружения блокировки файла?
Когда файл заблокирован для IO другого процесса, я получаю EAGAIN в текущем процессе, когда я выдаю вызов чтения/записи, который идеально согласуется с документированным поведением API.
Однако, когда эти FDs опрошены libevent для готовности к IO, они обнаруживаются как IO ready, что приводит к вызову моего обратного вызова.
Я пытался найти решение для этого, но я не знаю, ищу ли я правильные строки. Можно ли избежать этих вызовов?
Я пытаюсь достичь асинхронного ввода-вывода в однопоточном приложении. И поскольку блокировки могут быть не только основанием (теоретически) для EAGAIN, этот подход не будет работать для меня – skaur
@skaur Иногда у вас нет другого выбора, кроме как создать другой поток и позволить ему блокировать что-то, чтобы избежать опроса. –
@maxim .. У меня нет выбора тогда, я думаю :) – skaur