node.js - Node.js中工作线程阻塞系统调用的解决方案
问题描述
我最近在 tanenbaum 的操作系统一书中了解了用户级线程和内核级线程。由于用户级线程是由库包处理的,并且由于使用过 node.js 有点,我得出的结论是 node.js 使用 libuv 来处理工作线程,因此使用用户级线程。
但是我想知道 node.js 如何处理某些工作线程进行阻塞的系统调用,然后即使某些线程能够运行,内核也会阻塞整个进程的情况。
解决方案
但是我想知道 node.js 如何处理某些工作线程进行阻塞的系统调用,然后即使某些线程能够运行,内核也会阻塞整个进程的情况。
这不是现代操作系统中发生的事情。仅仅因为进程中的一个线程正在从磁盘读取/写入,操作系统不会阻止整个进程对其其他线程执行任何操作。
现代硬件使用DMA(直接内存访问)来精确地读取/写入磁盘,以便在从磁盘读取数据块或将数据块写入磁盘时不必阻塞 CPU。
推荐阅读
- python - Pandas groupby 按一列求和,按另一列排序结果
- r - 拆分数据框 R
- python - 与来自多个字典的给定键对应的一组值的交集
- get - JS 将 XMLHttpRequest 转换为 Fetch 函数 (GET):无法在“窗口”上执行“获取”:使用 GET/HEAD 方法的请求不能有正文
- node.js - Angular npm install 应用程序失败
- copy - 复制 N 次 Sling 资源
- javascript - 如何在 rxjs 和 axios 中永久重复订阅
- android - 在 ConstraintLayout 中移位的链式视图
- c - 如何抑制“警告:从不同大小的整数转换为指针”?
- python - Pyautogui 使用 size() 获取两个整数