社区
C++ 语言
帖子详情
请问多线程,读操作需要加锁吗?
StarDnaFox
2021-03-16 09:21:35
假如2个线程,A线程写加锁,B线程读需要加锁吗?
请指点迷津!
...全文
2747
8
打赏
收藏
请问多线程,读操作需要加锁吗?
假如2个线程,A线程写加锁,B线程读需要加锁吗? 请指点迷津!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
需要的,否则读出来的数据不准确。 比如一个结构体,写的时候,只修改了一个元素(成员),这个时候读取了,整个结构体。 数据就混乱了。
翅膀又硬了
2021-03-17
打赏
举报
回复
A加锁,B不加。那A的锁就没有用。多线程读写一个非原子的变量,可以同时读,不可以同时写,不可以同时读写。
sdghchj
2021-03-17
打赏
举报
回复
多线程,只要至少一个线程在写,原则上都要加锁。 什么情况下不需要加锁?基本数据类型的读写,且不需要考虑数据一致性的时候。
MISSGYA
2021-03-17
打赏
举报
回复
如果只有两个线程,一个线程只写,另外一个线程只读,那两个线程都没有必要加锁。
何时用多
线
程?多
线
程
需要
加
锁
吗?
线
程数多少最合理?
爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。 本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。 一、什么时候应该使用多
线
程? 今天看到一个问题,突然有感而发,想聊下这个话题。 不知道大家有没有想过这个问题,就是什么时候我该使用多
线
程呢?使用多
线
程就一定会提升系统性能吗? 1、其实是否应该使用多
线
程在很大程度上取决于应用程序的类型。 计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的
线
程中受益, 单C.
qt多
线
程访问同一变量_何时用多
线
程?多
线
程
需要
加
锁
吗?
线
程数多少最合理?
一、什么时候应该使用多
线
程?今天看到一个问题,突然有感而发,想聊下这个话题。不知道大家有没有想过这个问题,就是什么时候我该使用多
线
程呢?使用多
线
程就一定会提升系统性能吗?1、其实是否应该使用多
线
程在很大程度上取决于应用程序的类型。计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的
线
程中受益, 单CPU下, 多
线
程不会带来任何性能上的提升, ...
java多
线
程
读
一个变量
需要
加
锁
吗?
如果只是
读
操作
,没有写
操作
,则可以不用
加
锁
,此种情形下,建议变量
加
上final关键字; 如果有写
操作
,但是变量的写
操作
跟当前的值无关联,且与其他的变量也无关联,则可考虑变量
加
上volatile关键字,同时写
操作
方法通过synchronized
加
锁
; 如果有写
操作
,且写
操作
依赖变量的当前值(如:i++),则getXXX和写
操作
方法都要通过synchronized
加
锁
。 转载于:https...
Socket套接字在多
线
程发送数据时要
加
锁
吗?
转自知乎 问题:一条报文在1000字节到4000字节之间,数据量在每秒5000左右,多
线
程写套接字,要
加
锁
吗?没有
加
锁
会导致报文错乱吗?在网络编程的时候,报文不超过MTU是否就无需对套接字
加
锁
? 解答①: 你连 UDP 还是 TCP 都没说。 对于 UDP,多
线
程
读
写同一个 socket 不用
加
锁
,不过更好的做法是每个
线
程有自己的 socket,避免 contention,可以用 SO_R...
基于多
线
程并发-多
线
程为什么要
加
锁
多
线
程为什么要
加
锁
1、数据竞争(data race) 1)多个
线
程访问其共有的资源(堆、全局变量等),
需要
加
锁
(互斥
锁
、
读
写
锁
、递归
锁
等),否则可能存在寄存器和内存数据不一致。 **注意:**堆对象的创建分为分配内存、初始化、指针指向该内存,注意
锁
的细粒度。 2)
线
程私有资源无需
加
锁
。 2、不同
线
程的子步骤有顺序关联性 即
线
程2中必须等
线
程1将变量a赋值为1才能对a做除法。 注意: 为条件变量(std::condition_variable)的使用场景。 2)代码顺序不等同程序执行顺序
C++ 语言
64,683
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章