HarmonyOS Next中NAPI方式交互的性能问题如何优化?
当C++原生线程需要调用TS方法时,需要使用缓存的Env,这个Env是主线程的,这时需要切换到主线程才可以调用TS方法,如果是特别频繁的交互,C++原生线程需要频繁切换到主线程去调用(长连接网络、实时音视频流处理)等,这种情况会有等待主线程的线程问题吗?该如何优化呢?
HarmonyOS Next中NAPI方式交互的性能问题如何优化?
当C++原生线程需要调用TS方法时,需要使用缓存的Env,这个Env是主线程的,这时需要切换到主线程才可以调用TS方法,如果是特别频繁的交互,C++原生线程需要频繁切换到主线程去调用(长连接网络、实时音视频流处理)等,这种情况会有等待主线程的线程问题吗?该如何优化呢?
可以在TS侧调用C++时,使用Worker线程,这样Env就是worker线程的,C++和TS交互都使用worker线程,而不是主线程,避免切换和等待主线程引起的开销。
Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。
1 回答758 阅读✓ 已解决
1 回答1k 阅读
1 回答865 阅读
1 回答842 阅读
1 回答746 阅读
1 回答724 阅读
1 回答680 阅读
在TS层通过Worker创建线程与C++交互,这样两侧通信都在子线程。
Worker线程与TaskPool都是HarmonyOS提供的多线程机制,但是这里使用Worker,因为TaskPool线程是随机的,但是要注意Worker的数量限制。