【关键字】
ArkTS / TaskPool / Worker / 多线程 / 安全
【问题描述】
-
使用TaskPool和Worker时,是否使用下述指南中列举的模块即可保证线程安全,无需额外关注线程安全问题?
-
ArkTS中的Worker是否封装了TS中的Web Worker?二者使用的规则是否相同?
-
如何实现在两个Worker线程中共同修改一个string array?测试发现,两个Worker内部修改的只是传入的array的深拷贝,各自返回各自的处理结果给宿主线程,并不能在Worker对传入的array做实际的修改。
【解决方案】
-
ArkTS本身是单线程的,不涉及线程安全问题。
目前ArkTS开启多线程的方式是,语言基础类库提供的TaskPool和Worker两个多线程的方案,两种方案都基于Actor并发模型实现。Actor并发模型基于事件基础传递数据,不需要开发者去面对锁代理的一系列复杂偶发