gpt4 book ai didi

c - select(2)为什么叫 "synchronous"多路复用?

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:52 31 4
gpt4 key购买 nike

我现在对 select(2) 有点困惑,在摘要中指出:

select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - synchronous I/O multiplexing

据我所知,许多库和程序(例如 libuv 和 nodejs)将 select/epoll/kqueue/iocp 用于它们的事件循环,用于它们相应的异步/等待功能(和异步 I/O?)。

那么,同步多路复用到底是什么意思?我可以使用 select 实现异步 I/O 吗? 同步多路复用异步多路复用到底有什么区别?

最佳答案

你那里有一个解析错误。不是同步多路复用而是同步I/O的多路复用:select用于多路复用同步I/O调用。 readwrite 等称为同步 I/O,因为它们要么阻塞直到传输完成,要么不进行传输(非阻塞非就绪套接字示例)。

这可以与真正的异步调用形成对比,后者系统调用仅启动传输并在后台完成并在完成后发出通知。

nodejs 和 libuv 是不同的野兽。尽管 C 中的 I/O 可能是多路复用和同步的,但它对它们来说似乎是异步的——没有阻塞同步读取调用,因为这一切都在 C/库端透明地发生。

关于c - select(2)为什么叫 "synchronous"多路复用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298111/

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