深入领略Node.js 历程与线程(8000字长文彻底搞懂)
照旧上面谁人例子,我们在按时器执行的同时,去读一个文件:
线程数目酿成了 11 个,这是由于在 Node 中有一些 IO 操纵(DNS,FS)和一些 CPU 麋集计较(Zlib,Crypto)会启用 Node 的线程池,而线程池默认巨细为 4,由于线程数酿成了 11。 我们可以手动变动线程池默认巨细:
一行代码轻松把线程酿成 71。 Libuv Libuv 是一个跨平台的异步IO库,它团结了UNIX下的libev和Windows下的IOCP的特征,最早由Node的作者开拓,专门为Node提供多平台下的异步IO支持。Libuv自己是由C++说话实现的,Node中的非苏塞IO以及变乱轮回的底层机制都是由libuv实现的。 libuv架构图 在Window情形下,libuv直接行使Windows的IOCP来实现异步IO。在非Windows情形下,libuv行使多线程来模仿异步IO。 留意下面我要说的话,Node的异法式用是由libuv来支持的,以上面的读取文件的例子,读文件实质的体系挪用是由libuv来完成的,Node只是认真挪用libuv的接口,等数据返回后再执行对应的回调要领。 Node.js 线程建设 直到 Node 10.5.0 的宣布,官刚刚给出了一个尝试性子的模块 worker_threads 给 Node 提供真正的多线程手段。 先看下简朴的 demo:
上述代码在主线程中开启五个子线程,而且主线程向子线程发送简朴的动静。 因为 worker_thread 今朝如故处于尝试阶段,以是启动时必要增进 --experimental-worker flag,运行后调查勾当监督器,开启了5个子线程 worker_thread 模块 worker_thread 焦点代码(地点https://github.com/nodejs/nod...) (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |