我很困惑libuv有线程池机制,使用多个进程的必要性是什么?
答案 0 :(得分:0)
documentation说(强调我的):
libuv提供了一个线程池,可用于运行用户代码并在循环线程中获得通知。此线程池内部用于运行所有文件系统操作,以及 getaddrinfo和getnameinfo 请求。
总而言之,首先libuv
在内部使用多个线程来运行阻塞操作,而不会阻塞循环(文件系统,DNS)。
其次,出于同样的原因,您可以或多或少地使用它们。想象一下,你有一个cpu绑定任务,你不知道/不想/不能拆分部分通过不同的滴答,你仍然可以产生一个线程(实际工作请求)并让它在一个单独的线程。这样,你的循环就不会在等待这些任务的停顿中。