On this page

🌐 Special Topics

本部分涵盖了高级 Node-API 模式,当你的本地插件超出简单的同步函数调用时,你将会遇到这些模式。

🌐 This section covers advanced Node-API patterns that you will encounter once your native addon grows beyond a simple synchronous function call.

🌐 Topics covered

  • 对象和函数引用 - 使用 ObjectReferenceFunctionReference 在跨调用边界时保持 JavaScript 对象的存活,以防垃圾回收器过早回收它们
  • AsyncWorker - 使用 node-addon-apiAsyncWorker 类在后台线程上运行长时间的 C/C++ 操作,保持 Node 的事件循环不被阻塞
  • 线程安全函数 - 从不是主 Node.js 线程的本地线程回调到 JavaScript,使用线程安全函数 API
  • 上下文感知 - 编写能够在存在工作线程时正确加载和卸载的插件,包括实例数据和清理钩子

🌐 When do these topics apply?

主题何时需要
对象/函数引用将 JS 回调或对象存储在一个 C++ 数据成员中,该成员的生命周期超过当前调用
AsyncWorker将 CPU 密集型或阻塞 I/O 的工作移出主线程
线程安全函数从你自己管理的本地线程调用 JS 回调
上下文感知当你的插件在 Worker 线程环境中使用,或被多次加载/卸载时