相关问题
#鸿蒙通关秘籍#AKI和NAPI在跨线程调用JS函数中有哪些区别?
1356浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何利用Native线程安全函数实现鸿蒙跨线程调用?
1300浏览 • 1回复 待解决
HarmonyOS napi_env如何跨线程使用
947浏览 • 1回复 待解决
HarmonyOS Native C函数中有多线程交互,用napi调用会闪退
1483浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用N-API实现线程安全的跨线程函数调用?
1427浏览 • 1回复 待解决
新线程中调用的函数没返回,怎么结束线程?
3051浏览 • 1回复 待解决
利用worker子线程调用napi实现loop改写变量
2037浏览 • 1回复 待解决
HarmonyOS napi_call_threadsafe_function没有block调用线程
2168浏览 • 1回复 待解决
如何使用TaskPool在子线程调用对象成员函数
1682浏览 • 1回复 待解决
如何在taskpool的线程调用类的成员函数
1915浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何使用AKI实现C++跨线程调用JS函数,并进行加10操作?
888浏览 • 0回复 待解决
JS线程通过napi创建的C++线程的处理结果,如何返回JS线程
2823浏览 • 1回复 待解决
HarmonyOS napi 接口线程安全咨询
1376浏览 • 1回复 待解决
是否支持Context跨线程传递
2877浏览 • 1回复 待解决
HarmonyOS主线程的napi_ref是否可以被worker线程使用?
1496浏览 • 1回复 待解决
HarmonyOS napi_env 调用Native, Native 内启用多线程,但是env不支持多线程访问, 怎么处理?
1254浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用AKI实现C++跨线程调用JS函数,提高开发效率?
1020浏览 • 0回复 待解决
如何实现跨线程数据共享
1248浏览 • 1回复 待解决
HarmonyOS NEXT 如何实现Native线程调用ArkTS线程?
718浏览 • 1回复 待解决
如何在C++子线程调用ArkTS方法?(线程安全)
3043浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在主线程中加载系统模块并调用其函数?
947浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Node-API中实现多线程JavaScript函数调用?
1363浏览 • 1回复 待解决
主界面调用ts接口到native代码的加载是否都在一个线程里面?Ts和C++支持的最大线程数分别是多少
1557浏览 • 1回复 待解决
HarmonyOS在C++线程上调用napi_create_ark_runtime,如何调用到js层的对象
1656浏览 • 1回复 待解决
如何将通过napi创建的C++线程的处理结果传递回JS线程?
1215浏览 • 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层传下来的函数
创建线程安全函数
其他线程中调用线程安全函数
线程安全函数回调函数
四、总结