请问多线程,读操作需要加锁吗?

StarDnaFox 2021-03-16 09:21:35
假如2个线程,A线程写加锁,B线程读需要加锁吗?
请指点迷津!
...全文
2747 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_45860132 2021-03-30
  • 打赏
  • 举报
回复
能用就行,要家就一起加,不加就一个都不加。
NorZ 2021-03-19
  • 打赏
  • 举报
回复
还是要具体需求具体分析,看你是否需求数据同步了 如果不需要数据同步,比如B线程不需要等待A线程正在进行的运算结果,那就不需要加锁 反之,则两个线程都需要加锁
xian0-666 2021-03-18
  • 打赏
  • 举报
回复
当然要加锁,多线程文件读写不加锁有可能会混乱
flying_music 2021-03-18
  • 打赏
  • 举报
回复
引用 3 楼 翅膀又硬了 的回复:
A加锁,B不加。那A的锁就没有用。多线程读写一个非原子的变量,可以同时读,不可以同时写,不可以同时读写。
大神说的很对,一个加锁一个不加锁,那加锁的也没用 如果是基本数据类型,那原则上是不需要加锁的,但为了保险起见还是加上吧,无锁编程很吃功力的,而且跟具体系统有很大关系
  • 打赏
  • 举报
回复
需要的,否则读出来的数据不准确。 比如一个结构体,写的时候,只修改了一个元素(成员),这个时候读取了,整个结构体。 数据就混乱了。
翅膀又硬了 2021-03-17
  • 打赏
  • 举报
回复
A加锁,B不加。那A的锁就没有用。多线程读写一个非原子的变量,可以同时读,不可以同时写,不可以同时读写。
sdghchj 2021-03-17
  • 打赏
  • 举报
回复
多线程,只要至少一个线程在写,原则上都要加锁。 什么情况下不需要加锁?基本数据类型的读写,且不需要考虑数据一致性的时候。
MISSGYA 2021-03-17
  • 打赏
  • 举报
回复
如果只有两个线程,一个线程只写,另外一个线程只读,那两个线程都没有必要加锁。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧