当前位置: 首页 > 知识库问答 >
问题:

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

方光华
2024-03-25

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

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

共有2个答案

尉迟明贤
2024-03-25

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

公孙森
2024-03-25

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

 类似资料:
  • HarmonyOS Next开发中ArkTs是否支持AOP? 想类似于Android中实现切面编程,比如在方法前后增加日志,统计方法耗时等

  • 本文向大家介绍AngularJS中$http的交互问题,包括了AngularJS中$http的交互问题的使用技巧和注意事项,需要的朋友参考一下 这篇文章,主要是通过我们熟悉的jquery中ajax和jsonp的类型方式,总结一下$http的使用。 $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。 1. angular中的ajax 写法一: 示例: 写法二: ①GET

  • HarmonyOS Next中支持哪些类型的后台任务? 我是做IM即时通讯的,目前看HarmonyOS吸取了很多iOS的特性,后台任务这块还会像Android一样吗?是否支持配置白名单以及哪些任务支持后台运行? 目前想到的播放音乐,导航这些是支持后台任务的,不确定IM接受消息的网络任务是否还被允许,如果不被允许有哪些替代方案?

  • 本文向大家介绍浅谈优化Django ORM中的性能问题,包括了浅谈优化Django ORM中的性能问题的使用技巧和注意事项,需要的朋友参考一下 Django是个好工具,使用的很广泛。 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了。当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码。 怎么查问题 Web系统是个挺复杂的玩意,有时候有点无从下手哈。可以采用

  • 本文向大家介绍 Js和native交互的方法与问题 相关面试题,主要包含被问及 Js和native交互的方法与问题 时的应答技巧和注意事项,需要的朋友参考一下 实现JS和Native交互有两种方式: 第一种:shouldOverrideUrlLoading(WebView view, String url) 通过给WebView加一个事件监听对象(WebViewClient)并重写shouldOv

  • HarmonyOS Arkts UIAbility组件有几种启动模式? UIAbility启动模式和Android Activity的启动模式有哪些区别?这些启动模式有哪些应用场景?