如何使用libevent来检测何时释放文件锁?

时间:2014-06-12 13:27:15

标签: c++ linux io libevent disk-io

使用libevent检测非阻塞磁盘文件描述符的读/写准备(对于通过强制锁定获取的文件),我遇到了以下问题:

当一个文件被另一个进程锁定为IO时,当我发出读/写调用时,我在当前进程中获得了EAGAIN,这完全符合API的记录行为。

但是,当这些FD由libevent轮询为IO就绪时,它们被检测为IO就绪,这导致我的回调被调用。

我一直试图为此找到解决方案,但我不知道我是否正在寻找正确的线路。是否可以避免这些电话?

1 个答案:

答案 0 :(得分:0)

According to POSIX

  

与常规文件关联的文件描述符应始终为准备读取,准备写入和错误条件选择为true。

不确定是否有更好的方法,而不是产生阻塞该文件描述符的线程,然后在解锁文件时将事件发回给您的I / O线程。

inotify提供文件打开或关闭时的事件,但不幸的是,在锁定或解锁时不提供。