I/O 操作的处理程序是否可以在不同的线程中运行,而不是通过公共事件循环之一运行?

问题描述

我是 Node js 的新手。 Node.js Design Patterns 书向我展示了 Libuv - 该库在 Node js 的引擎盖下实现了解复用器和事件循环的概念,因此后者实现了其非阻塞性质。

书中有一段我看不懂:

每个操作系统都有自己的事件接口 解复用器:Linux 上的 epoll、macOS 上的 kqueue 和 I/O 完成 Windows 上的端口 (IOCP) API。最重要的是,每个 I/O 操作都可以 根据资源类型的不同,行为也大不相同,即使 在同一个操作系统中。在 Unix 操作系统中,对于 例如,常规文件系统文件不支持非阻塞 操作,所以为了模拟非阻塞行为,它是 必须在事件循环之外使用单独的线程

似乎强调(我)的句子意味着事件循环(即处理 I/O 操作结果的处理程序)和一些不同的处理程序可能会在并发线程中运行。它是线程安全的吗,难道它不会破坏由单个线程完成的非阻塞 I/O 的传说中的想法吗?为什么 Libuv 不能将阻塞 I/O 操作的结果放入解复用器中(所以它会在公共事件循环中解决)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)