腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
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备案
实时音视频
对象存储
云直播
活动推荐
运营活动
广告
关闭
领券