关于鸿蒙napi的异步机制的疑问,执行逻辑是跑在js线程上吗?
各位大佬,
据我理解,js作为一个单线程的语言,高耗时的操作一般都是要异步执行的。鸿蒙的js接口大部分也都是异步的,会带上一个callback的参数。
那么对于callback这种异步模式,底层C++会创建一个aysync work 然后将执行逻辑(耗时部分)和函数执行完成后的逻辑全部都封装进去。然后丢到uv_loop中。
最终调用引擎的loop接口,执行这个work。
我的问题就是,最终执行逻辑是跑在JS runtime线程上吗?如果是,那么假设这部分执行逻辑很复杂,很耗时,不会阻塞JS的runtime吗?
按我理解不是应该仅仅将callback的逻辑封装成async的work推到loop中,而执行逻辑交给底层新创建的线程不是更好吗?
(以上问题是我在audio_standard中render的write接口的时候的疑问。)
NAPI,异步机制
赞
收藏 2
回答 1
待解决
相关问题
鸿蒙NAPI机制具体的执行过程,如何实现js和c++通信的
13275浏览 • 1回复 待解决
关于ArkTS的线程机制是怎么样的?
419浏览 • 2回复 待解决
ArkTS的线程机制是怎么样的?每个线程是一个单独的JS引擎吗?
1864浏览 • 1回复 待解决
ArkTS异步机制与执行顺序
1348浏览 • 1回复 待解决
HarmonyOS 异步接口是否会启动一个子线程来执行其中的逻辑?
91浏览 • 1回复 待解决
HarmonyOS在异步线程往主线程抛任务无法被执行
325浏览 • 1回复 待解决
openharmony napi 异步耗时阻塞js的ui刷新
5435浏览 • 1回复 已解决
js 怎么开启异步线程?
5960浏览 • 1回复 待解决
JS线程通过napi创建的C++线程的处理结果,如何返回JS线程
1999浏览 • 1回复 待解决
关于鸿蒙应用开发的疑问?
5389浏览 • 1回复 待解决
hello world 在鸿蒙os 3.0上跑不起来
2181浏览 • 1回复 待解决
关于逻辑删除的问题有懂的吗?
2311浏览 • 1回复 待解决
关于鸿蒙camera外设的驱动编写疑问
4489浏览 • 1回复 待解决
HarmonyOS 关于deliveryWithInstall的疑问
567浏览 • 1回复 待解决
HarmonyOS关于RichText的疑问
723浏览 • 1回复 待解决
使用deveco studio 选择 api9 新建的项目可以跑在 tablat 平板设备上吗?
2773浏览 • 1回复 待解决
ArkTS线程模型中是否是每个线程跑一个runtime实例
1844浏览 • 1回复 待解决
如何指定多个异步任务在同一个辅助线程内执行
786浏览 • 0回复 待解决
HarmonyOS在ArkTS运行环境中,只能像v8环境里的js那样在主线程执行ArkTS代码吗?
369浏览 • 1回复 待解决
HarmonyOS 关于手动签名的疑问
419浏览 • 1回复 待解决
如何将通过napi创建的C++线程的处理结果传递回JS线程?
459浏览 • 1回复 待解决
关于Wearable开发的几个疑问
7424浏览 • 2回复 待解决
Worker的宿主线程必须是主线程吗?
367浏览 • 1回复 待解决
HarmonyOS在C++线程上调用napi_create_ark_runtime,如何调用到js层的对象
359浏览 • 1回复 待解决
使用JS开发只能做到页面使用JS处理,业务逻辑必须要Java处理是吗?
5810浏览 • 1回复 待解决
async 的实现逻辑是js的语言规范规定的,
关于多线程,可以启动多个JS线程或者采用worker的机制。
楼主可以参考:https://www.ecma-international.org/ecma-262/6.0/index.html