锁,数据同步


经常遇到数据同步的问题,具体有哪些情况呢?来聊一聊。我知道的,应该有以下四种,原子操作,中断控制,自旋锁和信号量。

原子操作

适用情况和场景

原子操作经常用在单个变量,比如一个整数或者bool变量;
场景:像全局计数器,状态标志变量。

中断控制

适用情况和场景
适用情况,数据量多的时候
场景:关闭/开启中断,单核CPU

自旋锁

适用情况和场景

既然中断操作无法满足所有的情况,自然有一些新的场景,需要新的方法来实现,这就是自旋锁;它适用于多核CPU情况;具体原理呢,请看下图:

请添加图片描述

信号量

适用情况和场景

看过自旋锁,发现其实自旋锁适用于短时间还好,要是长时间等待呢,怎么搞?这就有了信号量。信号量适用长时间等待的情况,它有等待,互斥,唤醒操作。需要的时候,唤醒它,就可以用了。也挺智能的。

小结

四种情况小结

以上就是数据同步的四种情况,适用于不同的场景。原子操作,中断控制,自旋锁,信号量,用到什么,自取。

相关推荐

  1. 进程同步与死

    2024-04-27 14:48:02       39 阅读
  2. 单体架构 synchronized 同步失效

    2024-04-27 14:48:02       47 阅读

最近更新

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

    2024-04-27 14:48:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 14:48:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 14:48:02       87 阅读
  4. Python语言-面向对象

    2024-04-27 14:48:02       96 阅读

热门阅读

  1. Smokeyshell

    2024-04-27 14:48:02       32 阅读
  2. Python编程----递归求解兔子的数量

    2024-04-27 14:48:02       36 阅读
  3. Ansible 清单描述

    2024-04-27 14:48:02       32 阅读
  4. K8S 调试运行中报错的 Pod

    2024-04-27 14:48:02       30 阅读
  5. 基于栈的后缀算数表达式求值(头歌)

    2024-04-27 14:48:02       35 阅读
  6. 观察者模式:实现对象间的松耦合

    2024-04-27 14:48:02       36 阅读
  7. s AbortController 接口取消多次请求 取消上次请求

    2024-04-27 14:48:02       31 阅读