std::atomic_bool的load()取值和=号取值有什么区别?

eakey 2020-02-28 10:41:33
std::atomic_bool isDone(false);
bool isClone=isDone和bool isClone=isDone.load()有什么区别?
...全文
3795 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
echo<£> 2020-12-22
  • 打赏
  • 举报
回复
1、load是取值,“=”是赋值,不是一回事,取值的方式有两种,一种是通过load取值,另一种直接用创建的示例取值(这种方式实际调用的是仿函数,即重载了“()”运算符,再通过仿函数调用 load() 实现取值) 2、赋值方式 store 和“=”运算符号,差别是,store采用memcpy进行值拷贝,而重载的“=”是通过逐字节赋值而且还是值交换的方式进行,效率比store慢;另外store可以直接使用 atomic对象进行赋值,并不是有接受atomic对象的store函数,而是传入的对象会先调用仿函数获取实际值作为store的返回值,而“=”运算符自带的删除,新定义的重载“=”的函数只能接受atomic管理的示例类型的值,例如 atomic_bool 利用“=”符号只能用类型 的值而不能用atomic_bool对象赋值
真相重于对错 2020-11-26
  • 打赏
  • 举报
回复
bool isClone=isDone 这句话调用的是 operator _Ty() const noexcept { return this->load(); } 你可以看到其实就是load
echo<£> 2020-11-26
  • 打赏
  • 举报
回复
你确定没有线程安全的差别吗?
yshuise 2020-11-26
  • 打赏
  • 举报
回复
std::atomic_bool isDone(false);
=================
这玩意儿是用于多线程的原子语句!
sdghchj 2020-02-28
  • 打赏
  • 举报
回复
重载了赋值运算符,没区别

65,180

社区成员

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

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