gpt4 book ai didi

Linux open(path, O_NONBLOCK | O_RDONLY | O_DIRECT) block 在文件上预读

转载 作者:太空狗 更新时间:2023-10-29 11:38:28 27 4
gpt4 key购买 nike

我想在我的程序中读取异步磁盘。

服务器上有很多硬盘,如果一个硬盘慢,程序就会阻塞。我想进行异步调用。

如果我调用:

打开(路径,O_NONBLOCK | O_RDONLY | O_DIRECT)

然后 pread,然后 pread 使用最多 8000 微秒,但会阻塞我的程序。

是否可以在没有线程池的情况下启用异步磁盘读取?

最佳答案

O_NONBLOCK 标志对普通文件没有任何影响(至少在大多数情况下),因为它们不被认为是 I/O 可以阻塞的东西 - 是的,它会阻塞从磁盘读取数据所花费的时间长度,但它不会像套接字或管道那样无限期地阻塞。

一个异常(exception)是当启用强制锁定时 - 然后对锁定区域的读取或写入可能会无限期阻塞(直到锁定被释放)并且 O_NONBLOCK 将影响此类调用的行为方式。

至于异步I/O是否可以不用线程,答案是可以(见aio(7)io_setup(2)io_submit( 2) 和 friend 们),但如果您从中看到很多好处,我会感到惊讶。

关于Linux open(path, O_NONBLOCK | O_RDONLY | O_DIRECT) block 在文件上预读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15808310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com