IOCPT/IOCP - 它只存在于 Windows 中吗? [复制]

Posted

技术标签:

【中文标题】IOCPT/IOCP - 它只存在于 Windows 中吗? [复制]【英文标题】:IOCPT/IOCP - does it exist only in Windows? [duplicate] 【发布时间】:2021-10-03 08:07:52 【问题描述】:

IO完成端口线程和IO完成端口本身——它是只存在于windows操作系统上,还是Linux/MacOS等各种操作系统上,它们仍然存在并被使用?

【问题讨论】:

一个快速的谷歌搜索可以回答你的问题我认为:***.com/q/2794535/7313891 您可能需要重新考虑这些标签——这与 C#、.NET、async/await 或线程池无关——更多的是关于操作系统本身 【参考方案1】:

I/O 完成端口是仅限 Windows 的 API,但其他常见平台在异步 I/O 方面确实具有大致相同的功能。

Linux 有 epoll 和 io_uring。 BSD/MacOS 有 kqueue。 Windows 也有注册 I/O。

最大的区别是这些 API 都没有像 IOCP 那样为您提供基于阻塞的并发限制。

【讨论】:

您能否稍微扩展一下“具有基于阻塞的并发限制”的概念?您的意思是指所有 IOCP 线程都阻塞等待 I/O 操作已完成的信号这一事实吗?

以上是关于IOCPT/IOCP - 它只存在于 Windows 中吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 dom 元素作为属性存在于窗口对象上? [复制]

var声明提前 undefined

如果 ID 存在于另一个表中,则拉行

向服务器发送数据。在循环中(存在于 Sqlite 数据库中。)

如何以递归方式推送到StackView QML?

为啥它只适用于在 SVM 分类器中设置 kernel:'rbf'?