鸿蒙 Napi::ThreadSafeFunction 的 Bl

2024-09-25  本文已影响0人  爱玩保龄球

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

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 函数执行完毕,可以立即执行后续任务。

上一篇 下一篇

猜你喜欢

热点阅读