美文网首页
鸿蒙 Napi::ThreadSafeFunction 的 Bl

鸿蒙 Napi::ThreadSafeFunction 的 Bl

作者: 爱玩保龄球 | 来源:发表于2024-09-25 20:46 被阅读0次

Napi::ThreadSafeFunction 提供了两种调用 JavaScript 函数的方式:BlockingCall 和 NonBlockingCall。这两者的区别在于它们如何处理线程同步和执行时机。

  • BlockingCall(阻塞调用)
    行为:使用 BlockingCall 时,工作线程会等待(阻塞),直到 JavaScript 函数在主线程中执行完毕后再继续执行。
    线程同步:保证在 JavaScript 函数执行完成之前,工作线程不会继续运行。
    适用场景:通常在工作线程依赖于 JavaScript 函数的结果时使用。比如,工作线程的后续操作需要基于 JavaScript 的返回值或结果。
    性能影响:由于工作线程要等待 JavaScript 函数执行完毕,可能会导致性能瓶颈,尤其当 JavaScript 函数运行时间较长时。
    示例:
tsfn.BlockingCall([](Napi::Env env, Napi::Function jsCallback) {
    // 这段代码会阻塞工作线程,直到 JavaScript 函数执行完毕。
});

在这种情况下,工作线程必须等 JavaScript 函数执行完才能继续运行。
-NonBlockingCall(非阻塞调用)
行为:使用 NonBlockingCall 时,工作线程不会等待 JavaScript 函数执行完毕。它是异步的,工作线程会立即继续执行,而不等待 JavaScript 函数的结果。
线程同步:允许工作线程在不等待 JavaScript 函数完成的情况下继续执行,JavaScript 函数会在稍后的事件循环中执行。
适用场景:当工作线程不依赖于 JavaScript 函数的返回结果时使用。比如,工作线程的任务可以独立于 JavaScript 的执行结果。
性能影响:因为工作线程不需要等待 JavaScript 执行,通常能提升性能,特别是在需要处理大量并发任务时。

tsfn.NonBlockingCall([](Napi::Env env, Napi::Function jsCallback) {
    // 工作线程不会等待 JavaScript 函数的执行,直接继续运行。
});

在这种情况下,工作线程无需等待 JavaScript 函数执行完毕,可以立即执行后续任务。

  • 关键区别:
    特性 BlockingCall(阻塞调用) NonBlockingCall(非阻塞调用)
    执行方式 工作线程会等待 JS 函数执行完毕 工作线程不会等待,立即继续执行
    线程同步 同步,阻塞工作线程 异步,不阻塞工作线程
    性能影响 如果 JS 函数执行时间较长,可能影响性能 工作线程不等待,提升并发性能
    适用场景 工作线程依赖 JS 函数结果时使用 工作线程不依赖 JS 函数结果时使用
    使用场景:
    当需要确保 JavaScript 函数执行完毕后工作线程才能继续执行时,使用 BlockingCall。
    当不需要等待 JavaScript 函数执行结果时,为了提升性能,使用 NonBlockingCall

相关文章

  • Electron9.x +vue+ffi-napi 调用Dll动

    本文主要介绍在 Electron9.x 中,使用ffi-napi,ref-array-napi,ref-napi ...

  • 3. GRO机制

    3. GRO(Generic receive offload) 上一篇已经说到了NAPI,但其中我们看到,NAPI...

  • linux 网络协议栈1--从中断到上送协议栈

    注: 内核代码是 4.9 版本 协议栈从报文接收说起,报文接收从网卡驱动说起。 两种方式,NAPI 和 非NAPI...

  • 2. NAPI机制

    2. NAPI机制 上一篇博客已经分析了,内核是如何通过驱动收包的。但其中说到软中断时,对使用的NAPI接口的描述...

  • 作业:

    blue——bl bl "bl bl";ue ue "u: u: u:"——"blu:" blocks——bl b...

  • 鸿蒙如何才能“成功”

    1、鸿蒙为何物? 鸿蒙包括手机鸿蒙和万物鸿蒙,此文讨论的鸿蒙重点是基于万物互联的鸿蒙,而不仅仅是手机鸿蒙。也只有在...

  • 新母本-更漫类(包更自查)咖喱万事屋:yr1920215

    [CM11]今日更漫汇总目录 BL韩更️———————BL日更BL日更️———————BL日完BL日完️—————...

  • Open Harmony 之 NAPI

    前言 此文代码版本为 code-v3.1-Beta。 2022/05/22 更新:oh 官方提供了一个插件用来一键...

  • 神兽“鸿蒙”来了,华为能翻身吗?

    鸿蒙是个什么鬼? 鸿蒙是谁?听起来萌萌哒,一问却很少有人认识,到底啥是鸿蒙?鸿蒙,中国神话传说的...

  • Node8.0之Napi探秘

    本文目录 简介 Napi简介 铁打的hello_world 关于文件头 关于基础数据类型 关于错误处理 关于异常处...

网友评论

      本文标题:鸿蒙 Napi::ThreadSafeFunction 的 Bl

      本文链接:https://www.haomeiwen.com/subject/yvzcrjtx.html