鸿蒙仓颉语言【同步sync】

操作同步sync

操作同步的重要性就不多说了,同步保证了结果的幂等性,保证了最终数据的稳定状态,能确保多个操作或线程执行的有序。

synchronized

同步关键字

Atomic

在sync库中,仓颉提供了原子操作类型AtomicXXXX,用于对基础数据类型原子操作,如:

public abstract class ByteBuffer <: Collection<Byte> & Hashable & Equatable<ByteBuffer>{
private static let serialGen = AtomicInt64(0)
let serial = serialGen.fetchAdd(1)
}

声明了一个局部原子操作对象serialGen所有类的实例均可以对其进行访问,但是其操作是原子,由基础语言运行时保证。

ReentrantMutex

在sync库中,仓颉也提供了重入互斥锁ReentrantMutex,用于保证不同线程工作者worker的同步操作,如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

public class WorkerSet {
    private static let THREAD_LOCAL_RANDOM = ThreadLocal<SecureRandom>()
    private let mutex = ReentrantMutex()

    public func arrange(channel: ReadWritableChannel): Unit{
   
   //.....
            //先获取互斥锁
            synchronized(mutex){
                if(let Some(id) <- channel.workerId){
                    id
                }else{
                    let id = randomId(workers.size)
                    channel.workerId = id
                    id
                }
            }
  //......
    }
}

相关推荐

  1. 鸿蒙语言【泛型generic】

    2024-07-21 21:46:02       15 阅读
  2. 新型开发语言的试用感受-语言发布之际

    2024-07-21 21:46:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 21:46:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 21:46:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 21:46:02       45 阅读
  4. Python语言-面向对象

    2024-07-21 21:46:02       55 阅读

热门阅读

  1. Vue3替代vue2就好比自动驾驶代替出租网约车

    2024-07-21 21:46:02       20 阅读
  2. 如何学习计算机

    2024-07-21 21:46:02       15 阅读
  3. 【大数据面试题】38 说说 Hive 怎么行转列

    2024-07-21 21:46:02       16 阅读
  4. 10步职业进阶:全新霍兰德自我提升计划

    2024-07-21 21:46:02       19 阅读
  5. Nginx系列-4 proxy_pass使用和路径拼接问题

    2024-07-21 21:46:02       14 阅读
  6. ASPICE在汽车软件开发中的作用

    2024-07-21 21:46:02       15 阅读
  7. C++ STL partion_point用法

    2024-07-21 21:46:02       15 阅读