相关文章推荐
乖乖的橡皮擦  ·  网络空间安全学院·  1 月前    · 
活泼的红金鱼  ·  Install Oracle ...·  3 月前    · 
机灵的盒饭  ·  3.[人脸识别] ...·  8 月前    · 
文雅的开水瓶  ·  python - What is the ...·  12 月前    · 
选择频道 点击选择频道
全部
博文收录
Ada助手

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

2020-02-28
std::atomic_bool isDone(false);
bool isClone=isDone和bool isClone=isDone.load()有什么区别?
2753 5 打赏
全部评论
1、load是取值,“=”是赋值,不是一回事,取值的方式有两种,一种是通过load取值,另一种直接用创建的示例取值(这种方式实际调用的是仿函数,即重载了“()”运算符,再通过仿函数调用 load() 实现取值) 2、赋值方式 store 和“=”运算符号,差别是,store采用memcpy进行值拷贝,而重载的“=”是通过逐字节赋值而且还是值交换的方式进行,效率比store慢;另外store可以直接使用 atomic对象进行赋值,并不是有接受atomic对象的store函数,而是传入的对象会先调用仿函数获取实际值作为store的返回值,而“=”运算符自带的删除,新定义的重载“=”的函数只能接受atomic管理的示例类型的值,例如 atomic_bool 利用“=”符号只能用类型 的值而不能用atomic_bool对象赋值
2020-12-22
bool isClone=isDone 这句话调用的是 operator _Ty() const noexcept { return this->load(); 你可以看到其实就是load
2020-11-26
你确定没有线程安全的差别吗?
2020-11-26
std::atomic_bool isDone(false);
=================
这玩意儿是用于多线程的原子语句!
2020-11-26
重载了赋值运算符,没区别
2020-02-28
——到底了——
说点什么…