相关问题
#鸿蒙通关秘籍#AKI和NAPI在跨线程调用JS函数中有哪些区别?
1400浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何利用Native线程安全函数实现鸿蒙跨线程调用?
1316浏览 • 1回复 待解决
HarmonyOS napi_env如何跨线程使用
966浏览 • 1回复 待解决
新线程中调用的函数没返回,怎么结束线程?
3070浏览 • 1回复 待解决
HarmonyOS Native C函数中有多线程交互,用napi调用会闪退
1527浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用N-API实现线程安全的跨线程函数调用?
1443浏览 • 1回复 待解决
HarmonyOS napi_call_threadsafe_function没有block调用线程
2222浏览 • 1回复 待解决
利用worker子线程调用napi实现loop改写变量
2107浏览 • 1回复 待解决
如何在taskpool的线程调用类的成员函数
1948浏览 • 1回复 待解决
如何使用TaskPool在子线程调用对象成员函数
1699浏览 • 1回复 待解决
HarmonyOS napi 接口线程安全咨询
1385浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何使用AKI实现C++跨线程调用JS函数,并进行加10操作?
902浏览 • 0回复 待解决
JS线程通过napi创建的C++线程的处理结果,如何返回JS线程
2849浏览 • 1回复 待解决
HarmonyOS NEXT 如何实现Native线程调用ArkTS线程?
735浏览 • 1回复 待解决
是否支持Context跨线程传递
2885浏览 • 1回复 待解决
如何实现跨线程数据共享
1263浏览 • 1回复 待解决
HarmonyOS主线程的napi_ref是否可以被worker线程使用?
1518浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用AKI实现C++跨线程调用JS函数,提高开发效率?
1032浏览 • 0回复 待解决
HarmonyOS napi_env 调用Native, Native 内启用多线程,但是env不支持多线程访问, 怎么处理?
1269浏览 • 1回复 待解决
如何在C++子线程调用ArkTS方法?(线程安全)
3142浏览 • 1回复 待解决
HarmonyOS在C++线程上调用napi_create_ark_runtime,如何调用到js层的对象
1674浏览 • 1回复 待解决
主界面调用ts接口到native代码的加载是否都在一个线程里面?Ts和C++支持的最大线程数分别是多少
1575浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Node-API中实现多线程JavaScript函数调用?
1377浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在主线程中加载系统模块并调用其函数?
962浏览 • 1回复 待解决
HarmonyOS 能够在主线程给 Worker 传递一个函数,让这个函数在 Worker 的线程中执行么?
1003浏览 • 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层传下来的函数
创建线程安全函数
其他线程中调用线程安全函数
线程安全函数回调函数
四、总结