Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
给 Node.js 插上 C++ 的翅膀
Search
ZHU, Kaidi
November 10, 2018
Programming
1
150
给 Node.js 插上 C++ 的翅膀
ZHU, Kaidi
November 10, 2018
Tweet
Share
More Decks by ZHU, Kaidi
See All by ZHU, Kaidi
Remilia - Structure of Huaban Directional Pinning System
xadillax
0
51
Other Decks in Programming
See All in Programming
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
590
業務自動化をJavaとSeleniumとAWS Lambdaで実現した方法
greenflagproject
1
100
Perlで痩せる
yuukis
1
680
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
160
Datadog RUM 本番導入までの道
shinter61
1
260
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
250
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
130
UPDATEがシステムを複雑にする? イミュータブルデータモデルのすすめ
shimomura
1
530
Practical Tips and Tricks for Working with Compose Multiplatform Previews (mDevCamp 2025)
stewemetal
0
120
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
220
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.4k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Language of Interfaces
destraynor
158
25k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
A better future with KSS
kneath
239
17k
Unsuck your backbone
ammeep
671
58k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
The Invisible Side of Design
smashingmag
299
51k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Speed Design
sergeychernyshev
31
990
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Transcript
给 NodC.js 插上 CNN 的翅膀
自我介绍 Ø C + Ø N Ø + + +
+ .+ Ø +
一个故事 .
Ø Ø
HH的 PHP 子进程方案 Node.js 进程 PHP 子进程 ONS SDK 启
动 ONS 收 / 发 收 / 发
N多脏? 宝宝只想做一个安静的 Node.js 项目
自己动手, 丰衣足食。 + .
1本 知其然,知其所以然。
动态链接库
如何 require The process.dlopen() method allows to dynamically load shared
objects. It is primarily used by require() to load C++ Addons, and should not be used directly, except in special cases. In other words, require() should be preferred over process.dlopen(), unless there are specific reasons.
都是 C++,与 NodC.js 原 N函数的区 别 +
2时 东风不与周郎便,铜雀春深锁二乔。
回到故事
性能: NBoBy &#
&)#(" "" + %) %)!$ , ((%' #"& '" (" %' # #( #"& '" %&$&"# #$* ("!
注意: 入不敷出 Ø . Ø + 8 I Ø C
N C O I
3法 万法归一,一归何处。
3.1. 环境
2 +- - .
3.2. 瞥
3.3. ChromC V8 I EC H
句柄 HHandle) v8::Local v8::Persistent v8::Eternal
句柄作用域(HandleScHpe) +< G$NH;:3LMG5VO G(H/ 7<R L =06VQ'.O</1H$N% !/7*GVC9 L2TJ E
• K< G • P< G G6" =H,)#=UH< G BA D-@>(4HLIEH$NH5VR %$N =UH G IEV+=U GF8H5VO?5S(H$N& L 2
. + C
常用数据类型
A header file filled with macro and utility goodness for
making add-on development for Node.js easier across versions 0.8, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 7, 8, 9 and 10. 3.4. NAN
CityHasC
3.5. libuv—— 事件循环与异步 • • • •
句柄(Handle)与请求(RequeHt) EF2<??@2D( EF2:3>6<72D( EF2D5@2D(0-/
EF2E6@2D(1./ EF2D;=7B2D( EF23CG>52D( ' # & <;4EF "! % <;4EF ,,, $ EF2B7A2D($ EF297D366B;>8?2D( EF297D366B;>8?)* EF25?>>75D2D( EF2<;CD7>)* H
没什么卵用的睡眠排序
同步原语 C / - / / - / / /
B /
睡眠排序 + 同步原语之互斥锁
ONC 中 Consume S程与事O循环S程N互
ONS 中的 Ack 类
4跳 旋转、跳跃,我不停歇。
DGE——E个老掉牙的 2D 游HG擎
EodG.Hs DGE DGmo
DemD 的样例
5猫 白猫黑猫,抓老鼠就是好猫。
N-APA
N-APA
AebAssembly
ARA64-EACAE82
ARA64-EACAE82
6结 看桃花,开出怎样的结果
FIN # $,'+)+%1,)&'.0*+.%(/- " !