|
|
1
3
在POSIX中,磁盘被认为是“快速设备”,这意味着它们总是被阻塞(这就是为什么O_NoBlock不能为您工作)。只有网络套接字可以是非阻塞的。 有posix a i o,但例如,在Linux上,它有许多限制,使其不适合一般用途(仅对于o_direct,I/O必须与扇区对齐)。 如果您想将正常的POSIX IO集成到异步事件循环中,那么人们似乎会求助于线程池,其中阻塞的系统调用是由一个工作线程在后台执行的。这种图书馆的一个例子是 libeio |
|
2
2
不。 我还没有看到一个*nix,在这里您可以在常规文件上不阻塞I/O,而无需诉诸更特殊的 AIO library (但对于某些情况,例如Solaris,如果其他人持有该文件的锁,则O_nonblock具有效果) |
|
|
3
-1
请看node.js/io.js使用的libuv: https://github.com/libuv/libuv 它是libeio的一个很好的替代方案,因为它在所有主要的操作系统上都表现良好,从Windows到BSD、Mac OS X,当然还有Linux。 它支持I/O完成端口,这使它成为比libeio更好的选择,如果您是针对Windows的。 C代码也是非常可读的,我强烈推荐本教程: https://nikhilm.github.io/uvbook/ |
|
|
Jess The Witch · GCP云功能中处理延迟任务的模式 1 年前 |
|
Plup · 连接失败时,PyMongo异步客户端未引发异常 1 年前 |
|
|
user1233894 · 尝试从全局函数传递值 1 年前 |
|
|
Fabiano Taioli · 管理单线程Rust中的阻塞函数 1 年前 |
|
|
river7816 · 为什么spdlog不在async函数中打印 2 年前 |