问题描述
我是 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 (将#修改为@)