锁,数据同步

目录

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

原子操作

适用情况和场景

原子操作经常用在单个变量,比如一个整数或者bool变量;

场景:像全局计数器,状态标志变量。

中断控制

适用情况和场景

适用情况,数据量多的时候

场景:关闭/开启中断,单核CPU

自旋锁

适用情况和场景

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

信号量

适用情况和场景

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

小结

四种情况小结

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

相关推荐
紫荆鱼11 分钟前
设计模式-适配器模式(Adapter)
c++·设计模式·适配器模式
报错小能手2 小时前
C++笔记(面向对象)详解单例模式
c++·笔记·单例模式
吗~喽2 小时前
【C++】内存管理
c++
上去我就QWER3 小时前
解锁Qt元对象系统:C++编程的超强扩展
c++·qt
freedom_1024_3 小时前
【c++ qt】QtConcurrent与QFutureWatcher:实现高效异步计算
java·c++·qt
minji...4 小时前
C++ 模板进阶
开发语言·c++
AC是你的谎言4 小时前
c++仿muduo库实现高并发服务器--connection类
linux·服务器·c++·学习
fantasy5_54 小时前
手写一个C++字符串类:从底层理解String的实现
java·jvm·c++
江塘4 小时前
机器学习-KNN算法实战及模型评估可视化(C++/Python实现)
开发语言·c++·人工智能·python·算法·机器学习
KL41804 小时前
【QT】窗口
c++·qt