我正在使用 Linux aio ( io_submit()
/ io_getevents()
) 进行文件 I/O。由于某些操作没有 aio 等效项 ( open()
, fsync()
, fallocate()
),因此我使用了一个可能会阻塞而不影响主线程的工作线程。我的问题是,我应该添加close()
到这个列表中吗?
所有文件都O_DIRECT
在 XFS 上打开,但我对这个问题的一般答案以及关于我选择的文件系统和打开模式的具体答案都很感兴趣。
请注意,使用工作线程close()
并非易事,因为close()
通常在清理路径中调用,这不是启动工作线程请求并等待它的好地方。所以我希望这close()
在这种情况下是非阻塞的。
对于这个问题,“阻塞”是指等待 I/O 操作,或者等待某个只有在 I/O 操作完成时才释放的锁,但不包括页面错误服务。