腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
2
回答
std::
原子
的锁在哪里?
、
、
、
、
如果一个数据结构中有多个元素,那么它的
原子
版本就不能(总是)是无
锁
的。我被告知,对于较大的类型,这是正确的,因为CPU无法在不使用某种
锁
的情况下
原子
地更改数据。std::endl; std::cout << sizeof(var) << std::endl;输出(
Linux
/gcc)是:16由于
原子
和foo大小相同,所
浏览 3
提问于2018-05-11
得票数 81
回答已采纳
1
回答
函数以
原子
方式读取值?
、
我目前正在玩
原子
读写,在我的理解中碰到了一道墙。我知道写入
变量
(如通过增量)必须是
原子
的,但我不确定是否读取
变量
。考虑一下Windows上的_InterlockedExchangeAdd或
Linux
上的__sync_add_and_fetch。我找不到一个以
原子
方式检索正在更新的值的函数。现在,我已经做了我的研究,在这里张贴和告诉我,读不是
原子
。 1)如果我使用上面的函数,我如何
原子
地读取这个值,例如,如果从一个函数返回它?2)如果我不想使用这些函数,
浏览 2
提问于2016-07-05
得票数 0
回答已采纳
2
回答
原子
变量
是无
锁
的吗?
、
、
、
、
当我们讨论
原子
变量
时,比如C++11的atomic<>,它是无
锁
的吗?或者,无
锁
是不同的吗?如果我用
原子
变量
管理一个队列,它会比一个无
锁
队列慢吗?
浏览 0
提问于2012-04-11
得票数 42
回答已采纳
1
回答
如何进行内核线程通信?
、
到目前为止,我的研究让我相信唯一的方法是使用共享内存(声明全局
变量
)和锁定机制来同步线程之间的读/写。关于这方面的资料相当稀缺。 有没有其他我可以考虑的方法?内核代码中最常见的标准是什么?
浏览 2
提问于2011-08-12
得票数 3
回答已采纳
1
回答
原子
变量
是否仅在其所在的缓存线上刷新缓存?
、
、
、
我尽量使用
原子
变量
,而不是互斥。但我对
原子
变量
有疑问。
原子
变量
是否只获取、释放它所在的缓存线?
浏览 0
提问于2021-04-05
得票数 0
2
回答
如果仍需要互斥
锁
才能正常工作,为什么还要使用std::atomic
、
、
、
、
阅读的文本时,我读到了这句话:如果没有“使用PODs的无
锁
代码”,
原子
还有什么用呢?更新引号中的“共享
变量
”与“条件
变量
”不同。请参阅同一页面中的以下内容: 请不要回答"“或"”,而是提供有
浏览 35
提问于2018-12-05
得票数 -1
2
回答
导致线程锁定的C++优化
、
、
我做了一个程序,它有以下特点:
变量
:volatile int8_t* p2
浏览 39
提问于2017-02-23
得票数 1
回答已采纳
1
回答
原子
变量
在读取-修改-存储操作上也需要锁定吗?
、
、
我知道
原子
变量
是无
锁
的!!像std::atomic::fetch_add一样的读取-修改-存储操作也是
原子
执行的?所以我认为它需要锁定,即使是
原子
变量
... 我很清楚吗?
浏览 2
提问于2021-04-10
得票数 0
1
回答
原子
指令是否涉及内核?
、
、
、
、
我阅读这个是为了了解
Linux
的futex。有件事我不明白。 我一直认为
原子
指令(如test-and-set )总是涉及内核。 那么,为什么第一次获取
锁
不涉及内核呢?更具
浏览 4
提问于2020-02-11
得票数 1
回答已采纳
3
回答
比较和交换的工作原理
、
、
、
我读过相当多的帖子,说比较和交换保证
原子
性,但是我仍然不能理解它是如何做到的。newvalue) int temp = *ptr; *ptr = newvalue}void lock(int *mutex) while(!CAS(mutex, 0 , 1));这如何防止两个线程同时获取互斥
锁
?
浏览 2
提问于2014-03-12
得票数 28
1
回答
可以将std::shared_timed_mutex上的共享
锁
升级为独占
锁
吗?
、
、
、
新的std::shared_timed_mutex允许两种类型的
锁
:共享
锁
和独占
锁
。 我不确定这是否适用于std::shared_mu
浏览 4
提问于2014-06-20
得票数 28
回答已采纳
1
回答
Java中AtomicVariables对
锁
的影响
、
、
、
对于我目前的项目,当我们有超过1个线程访问它时,我尽量使用
原子
整数和
原子
布尔值。这有助于保持逻辑
锁
的自由(在内部,我知道它可能仍然使用
锁
),并且代码更加整洁。我想知道使用
原子
变量
的惩罚性能是什么,这是否会过于频繁地使缓存失效,并实际上使我的解决方案不如仅仅使用
锁
?
浏览 0
提问于2015-06-11
得票数 3
1
回答
重新分配时是否需要进程共享
变量
的锁定?(不递增)
、
、
、
他们不时需要更改globvars.py中的全局
变量
。我知道我需要一个
锁
来用ctype-int递增例如Value(),因为增量不是
原子
的。对
浏览 7
提问于2022-08-18
得票数 0
4
回答
有
原子
|=操作吗?
、
、
、
有没有
原子
|=或者and
原子
或者?如果没有,在需要threadsafe的
变量
中设置位的推荐技术是什么?(我在避免
锁
)
浏览 5
提问于2011-06-26
得票数 7
回答已采纳
2
回答
为什么在通知condition_variable之前我需要获得一个
锁
来修改一个共享的“
原子
”
变量
、
、
编码 即使共享
变量
是
原子
变量
,也必须在互斥项下修改它,以便正确地将修改发布到等待的线程我不太明白,为什么修改
原子
变量
需要一个
锁
。s_hasEvent.store(true, s
浏览 16
提问于2017-01-26
得票数 11
1
回答
CPU松弛指令和C++11原语
、
、
、
、
我注意到许多使用操作系统特定原语实现的无
锁
算法,例如描述的自旋
锁
(它使用
Linux
特定的
原子
原语)经常使用"cpu relax“指令。GCC可以通过以下方式实现这一点:具体来说,这条指令通常用于while循环自旋
锁
的主体中,同时等待
变量
设置为某个值。
浏览 5
提问于2014-08-07
得票数 17
2
回答
将atomic<>定义为函数中的静态
变量
、
C++11要求函数中的静态
变量
在函数的第一次运行时进行
原子
初始化。唯一有效地做到这一点的方法是双重检查锁定,以防止昂贵的互斥
锁
一直存在。 我只是有必要在函数中有一个静态的atomic<size_t>。如果这样的
原子
通过双重检查的锁定被
原子
初始化,那就没有意义了。相反,应该像另一个静态初始化的非const本机
变量
一样来处理它。我检查了VC++和Intel C++在Windows下生成的代码,以及
Linux
下的clang++和g++生成的代码,以及所有根据我的预
浏览 1
提问于2022-05-14
得票数 2
3
回答
C++ std::
原子
与增强
原子
、
、
在我的应用程序中,我有一个int和bool
变量
,它们由多个线程访问(多个写/读)。目前,我使用两个互斥
变量
,一个用于int,另一个用于bool,用于保护这些
变量
。我听说过使用
原子
变量
和操作符来编写无
锁
多线程程序。我的问题是 boost/atomic.hpp?和
原子
之间的主要区别是什么?哪个更标准,哪个更受欢迎?目前我正在
Linux
上使用gnu gcc 4.6
浏览 1
提问于2012-03-04
得票数 32
回答已采纳
2
回答
标准
原子
bool与
原子
标志的区别
、
、
、
、
我不知道std::atomic
变量
,但我知道std::mutex (奇怪的右!)但是,有一件事引起了我的注意:标准提供了两种看似相同的
原子
类型,如下所示: 但我不明白。std::atomic<bool>不能保证无
浏览 13
提问于2016-09-05
得票数 65
回答已采纳
1
回答
如何正确地、
原子
地和线程地插入一个全局
变量
一次?
、
、
、
、
我创建了一个全局自旋
锁
变量
和一个检查
变量
:int check = 1;if (check == 1) check = 0; } 所以这两行应该以
原子
的方式出现我不能用互斥
锁
整个if-语句。有
浏览 0
提问于2019-12-10
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
原子变量
详解Linux多线程中的互斥锁、读写锁、自旋锁、条件变量、信号量
Java并发编程之原子变量
Linux 内核原子操作
linux 环境变量
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券