Node 雖然自身存在多個(gè)線程,但是運(yùn)行在 v8 上的 JavaScript 是單線程的。Node 的 child_process 模塊用于創(chuàng)建子進(jìn)程,我們可以通過子進(jìn)程充分利用 CPU。范例:
這里了解一下包括 fork 在內(nèi)的幾個(gè)進(jìn)程創(chuàng)建方法:
1.spawn(command, [args], [options]),啟動(dòng)一個(gè)新進(jìn)程來執(zhí)行命令 command,args 為命令行參數(shù)
2.exec(command, [options], callback),啟動(dòng)一個(gè)新進(jìn)程來執(zhí)行命令 command,callback 用于在進(jìn)程結(jié)束時(shí)獲取標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出,以及錯(cuò)誤信息
3.execFile(file, [args], [options], [callback]),啟動(dòng)一個(gè)新進(jìn)程來執(zhí)行可執(zhí)行文件 file,callback 用于在進(jìn)程結(jié)束時(shí)獲取標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出,以及錯(cuò)誤信息
4.fork(modulePath, [args], [options]),啟動(dòng)一個(gè)新進(jìn)程來執(zhí)行一個(gè) JavaScript 文件模塊,這時(shí)候創(chuàng)建的是 Node 子進(jìn)程
Node 進(jìn)程間通信
父進(jìn)程
子進(jìn)程
需要注意的是,這里的 send 方法是同步的,因此不建議用于發(fā)送大量的數(shù)據(jù)(可以使用 pipe 來代替,詳細(xì)見:http://nodejs.org/api/all.html#child_process_child_process_spawn_command_args_options)。
特殊的情況,消息中 cmd 屬性值包含 NODE_ 前綴(例如:{cmd: ‘NODE_foo'} 消息),那么此消息不會(huì)被提交到 message 事件(而是 internalMessage 事件),它們被 Node 內(nèi)部使用。
send 方法的原型為:
這里,sendHandle(handle)可以被用于發(fā)送:
1.net.Native,原生的 C++ TCP socket 或者管道
2.net.Server,TCP 服務(wù)器
3.net.Socket,TCP socket
4.dgram.Native,原生的 C++ UDP socket
5.dgram.Socket,UDP socket
send 發(fā)送 sendHandle 時(shí)實(shí)際上不是(也不能)直接發(fā)送 JavaScript 對(duì)象,而是發(fā)送文件描述符(最終以 JSON 字符串發(fā)送),其他進(jìn)程能夠通過這個(gè)文件描述符還原出對(duì)應(yīng)對(duì)象。
現(xiàn)在看一個(gè)例子:
父進(jìn)程
子進(jìn)程
通過端口 7000 訪問此程序,得到輸出可能為 connection 主站蜘蛛池模板: 欧美日韩在线视频一区 | 久久精品视频网站 | 在线播放免费播放av片 | 日韩av电影免费看 | 一级片久久免费 | 久草视频在线资源 | 精品中文字幕久久久久四十五十骆 | 在线无码| 天天色宗合 | 亚洲伊人色欲综合网 | 精品乱码久久久久 | 久久久鲁 | 国产中文av在线 | 一级视频在线播放 | 色女人在线 | 草久在线 | 综合国产一区 | 久国产精品视频 | 欧美a视频 | 男女羞羞视频在线观看免费 | 91情侣在线偷精品国产 | 免费欧美精品 | 日韩黄色成人 | 依人在线视频 | 黄色网址电影 | av电影在线播放 | 男女无套免费视频 | 一级免费在线 | 麻豆一二区 | 亚洲午夜一区二区三区 | 在线观看视频日本 | 爱唯侦察 国产合集 亚洲 | 姑娘第5集高清在线观看 | 91网站链接 | 毛片国产| 美女视频黄视大全视频免费网址 | 激情视频导航 | 日日草夜夜 | 午夜视频在线 | 一级做受大片免费视频 | 亚洲第一成人在线观看 |