首页 > 解决方案 > Node.js中工作线程阻塞系统调用的解决方案

问题描述

我最近在 tanenbaum 的操作系统一书中了解了用户级线程和内核级线程。由于用户级线程是由库包处理的,并且由于使用过 node.js 有点,我得出的结论是 node.js 使用 libuv 来处理工作线程,因此使用用户级线程。

但是我想知道 node.js 如何处理某些工作线程进行阻塞的系统调用,然后即使某些线程能够运行,内核也会阻塞整个进程的情况。

标签: node.jsmultithreadingprocessoperating-systemlibuv

解决方案


但是我想知道 node.js 如何处理某些工作线程进行阻塞的系统调用,然后即使某些线程能够运行,内核也会阻塞整个进程的情况。

这不是现代操作系统中发生的事情。仅仅因为进程中的一个线程正在从磁盘读取/写入,操作系统不会阻止整个进程对其其他线程执行任何操作。

现代硬件使用DMA(直接内存访问)来精确地读取/写入磁盘,以便在从磁盘读取数据块或将数据块写入磁盘时不必阻塞 CPU。


推荐阅读