我是 node.js 的新手。我目前正在阅读Basarat Ali Syed的名为“ Beignning Node.js ”的书。
以下是其中的一段摘录,说明了传统 Web 服务器线程池的缺点:
几年前,大多数 Web 服务器使用线程池这种方法,并且许多服务器今天仍在使用。然而,这种方法并非没有缺点。线程之间再次浪费了 RAM。此外,操作系统需要在线程之间进行上下文切换(即使它们处于空闲状态),这会导致 CPU 资源的浪费。
我不太明白为什么线程池内的线程之间会有上下文切换。据我所知,一个线程将在任务期间持续。并且一旦任务完成,线程就可以自由地接收下一个任务。
所以我的Q1:为什么需要上下文切换?线程之间的上下文切换何时发生?
我的Q2:为什么node.js不使用多线程来处理事件队列中的事件?不是更高效,减少事件的排队时间吗?