HarmonyOS Next中NAPI方式交互的性能问题如何优化?

HarmonyOS Next中NAPI方式交互的性能问题如何优化?

当C++原生线程需要调用TS方法时,需要使用缓存的Env,这个Env是主线程的,这时需要切换到主线程才可以调用TS方法,如果是特别频繁的交互,C++原生线程需要频繁切换到主线程去调用(长连接网络、实时音视频流处理)等,这种情况会有等待主线程的线程问题吗?该如何优化呢?

阅读 720
2 个回答

在TS层通过Worker创建线程与C++交互,这样两侧通信都在子线程。
Worker线程与TaskPool都是HarmonyOS提供的多线程机制,但是这里使用Worker,因为TaskPool线程是随机的,但是要注意Worker的数量限制。

可以在TS侧调用C++时,使用Worker线程,这样Env就是worker线程的,C++和TS交互都使用worker线程,而不是主线程,避免切换和等待主线程引起的开销。
Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进