相关问题
新线程中调用的函数没返回,怎么结束线程?
1031浏览 • 1回复 待解决
利用worker子线程调用napi实现loop改写变量
423浏览 • 1回复 待解决
是否支持Context跨线程传递
590浏览 • 1回复 待解决
如何在taskpool的线程调用类的成员函数
466浏览 • 1回复 待解决
JS线程通过napi创建的C++线程的处理结果,如何返回JS线程
607浏览 • 1回复 待解决
如何在C++子线程调用ArkTS方法?(线程安全)
389浏览 • 1回复 待解决
主界面调用ts接口到native代码的加载是否都在一个线程里面?Ts和C++支持的最大线程数分别是多少
389浏览 • 1回复 待解决
多线程调用 OH_Drawing_CreateFontCollection 崩溃
471浏览 • 1回复 待解决
如何判断当前线程是否是主线程
741浏览 • 1回复 待解决
ArkTS有哪些线程安全的数据类型,多线程方案如何保证线程安全
696浏览 • 1回复 待解决
ArkTS能开启子线程吗,如何判断当前线程是UI线程还是子线程?
625浏览 • 1回复 待解决
复杂JS类对象是否可以支持跨线程共享传递?
284浏览 • 1回复 待解决
线程与线程池的个数限制
294浏览 • 1回复 待解决
TaskPool子线程和主线程如何通信
703浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
880浏览 • 1回复 待解决
有获取当前线程id和主线程id方式吗?
407浏览 • 1回复 待解决
线程信息以及线程的任务栈如何获取
465浏览 • 1回复 待解决
Native子线程切回主线程传递的env是否会变化
526浏览 • 1回复 待解决
打印当前所在线程信息如何判断当前处于哪个线程
471浏览 • 1回复 待解决
HarmonyOS中UI必须在主线程渲染吗? 如何判断当前线程是否为主线程?
608浏览 • 1回复 待解决
Worker线程内存如何共享
826浏览 • 1回复 待解决
js 怎么开启异步线程?
4711浏览 • 1回复 待解决
zip包的解压是在主线程还是IO线程
487浏览 • 1回复 待解决
在ts中发现UI卡顿严重,需要使用异步多线程任务
571浏览 • 1回复 待解决
主线程怎么才能判断子线程是否已经执行结束了
5176浏览 • 1回复 待解决
一、背景
napi跨线程调用,从ArkTS线程传下来某个函数,在c++子线程调用这个函数。主要使用napi_create_threadsafe_function,napi_create_reference这两个接口。
二、相关接口
NAPI中的线程安全函数
NAPI提供的简便方法,避免了线程间通信,同时可以回到主线程调用JS函数。
napi_create_threadsafe_function:创建线程安全函数,也是一个NAPI对象,包含一个JS函数,可以从多个线程调用。
延长生命周期
从TS层传下来的函数值在对应的作用域才持有他的生命周期,超出作用域需要通过引用的方式延长他的生命周期。
napi_create_reference:为Object创建一个reference,以延长其生命周期。调用者需要自己管理reference生命周期。
三、相关代码
TS侧传入回调函数
处理从TS层传下来的函数
创建线程安全函数
其他线程中调用线程安全函数
线程安全函数回调函数
四、总结