在使用 libevent 检测非阻塞磁盘文件描述符的读/写准备情况(对于强制锁定保护的文件)时,我遇到了以下问题:
当一个文件被另一个进程锁定为 IO 时,当我发出读/写调用时,我在当前进程中得到 EAGAIN,这与 API 的记录行为完全一致。
但是,当 libevent 轮询这些 FD 以了解 IO 就绪情况时,它们会被检测为 IO 就绪,这会导致调用我的回调。
我一直在尝试为此找到解决方案,但我不知道我是否在正确的行上搜索。是否可以避免这些电话?
与常规文件关联的文件描述符应始终为准备读取、准备写入和错误条件选择 true。
不确定是否有比生成一个阻塞该文件描述符的线程更好的方法,然后在文件解锁时将事件发送回您的 I/O 线程。
不幸的是, inotify在文件打开或关闭时提供事件,但在锁定或解锁时不提供事件。