HarmonyOS 多线程共享数据方法的疑惑
从这里看了几个官网文档,https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkts-58-V5, 可以看到有很多问题是关于多线程之间共享数据的疑问和咨询。也看到了大部分回答线程间内存共享都是推荐了sharedarraybuffer+Atomics的方案。
但是理解实际上Atomics锁住的只是sharedarraybuffer中某一个位置的数值。如果需要共享的数据是1000个字节的sharedarraybuffer,Atomics.wait和Atomics.notify又怎么保证其余999个位置的数据没有出现竞争而获取到的是无效数据呢?感觉这个Atomics和加锁的功能还是不一样呀?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
如何实现多线程数据共享
2243浏览 • 1回复 待解决
HarmonyOS中的多线程如何做到数据对象共享?
182浏览 • 0回复 待解决
多线程中EGL如何共享Context
448浏览 • 1回复 待解决
HarmonyOS Appstorage支持多线程间的状态共享吗?
308浏览 • 1回复 待解决
HarmonyOS 多线程数据互通问题
48浏览 • 2回复 待解决
HarmonyOS 多线程如何使用锁保障共享数据的访问安全性,类似synchronized
46浏览 • 1回复 待解决
使用taskpool实现多线程时,如何实现内存共享
2249浏览 • 1回复 待解决
HarmonyOS 数据库多线程操作
202浏览 • 1回复 待解决
如何实现跨线程数据共享
292浏览 • 1回复 待解决
ArkTS是否支持类似Java的共享内存模型进行多线程开发
2054浏览 • 1回复 待解决
ArkTS是否支持类似Java的共享内存模型用于多线程开发?
839浏览 • 2回复 待解决
HarmonyOS Sendable的类实例,在以下场景能否在多线程中共享
9浏览 • 1回复 待解决
HarmonyOS中的多线程和Android的多线程有何区别?
172浏览 • 0回复 待解决
HarmonyOS多线程使用?
206浏览 • 0回复 待解决
ArkTS有哪些线程安全的数据类型,多线程方案如何保证线程安全
2051浏览 • 1回复 待解决
HarmonyOS关于多线程的问题
489浏览 • 1回复 待解决
HarmonyOS 类成员无法在线程之间共享数据
34浏览 • 1回复 待解决
HarmonyOS 多线程异步修改数据是否会出现脏数据问题
13浏览 • 1回复 待解决
HarmonyOS 多线程锁问题
524浏览 • 1回复 待解决
HarmonyOS是否支持多线程?
166浏览 • 0回复 待解决
HarmonyOS 多线程写法限制
166浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙应用中如何使用UI主线程调用多线程方法?
132浏览 • 1回复 待解决
HarmonyOS 关于多线程并发的使用
44浏览 • 1回复 待解决
ArkTS中有哪些线程安全的数据类型?如何确保多线程环境下的数据安全性?
621浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现ArkTS线程间数据共享?
118浏览 • 1回复 待解决
可共享对象SharedArrayBuffer,是拥有固定长度的原始二进制数据缓冲区,可以存储任何类型的数据,包括数字、字符串等。
它支持在多线程之间传递,传递之后的SharedArrayBuffer对象和原始的SharedArrayBuffer对象可以指向同一块内存,进而达到共享内存的目的。SharedArrayBuffer对象存储的数据在子线程中被修改时,需要通过原子操作保证其同步性,即下个操作开始之前务必需要保证上个操作已经结束。
下面将通过示例说明原子操作保证同步性的必要性。Atomics对象提供了一组静态方法用来对 SharedArrayBuffer对象进行原子操作。这些原子操作属于Atomics模块。与一般的全局对象不同,Atomics不是构造函数,因此不能使用new操作符调用,也不能将其当作函数直接调用。Atomics的所有属性和方法都是静态的(与 Math 对象一样)。多个共享内存的线程能够同时读写同一位置上的数据。原子操作会确保正在读或写的数据的值是符合预期的,即下一个原子操作一定会在上一个原子操作结束后才会开始,其操作过程不会中断。Atomics锁住的是sharedarraybuffer创建的所有区域。