单调计数整数的比较安全吗?
Is a comparison on monotonic count integer safe?
我知道在多线程环境中这样做是不安全的:
if (some_var > 0) {
// Do something.
}
因为在比较时,可能会有另一个线程更改该值。
如果some_var是一个计数器怎么办。也就是说,它只能递增,永远不能递减。那么跟随操作线程安全吗?
if(some_counter >0) {
// Do something.
}
另外,如果some_counter是字节,还是int32,int64,这有什么区别吗?
如果some_var是一个计数器怎么办。也就是说,它只能递增,永远不能递减。那么跟随操作线程安全吗?
不,不是。递增不是原子操作。
另外,如果some_counter是字节,还是int32,int64,这有什么区别吗?
这并没有真正的区别。
您应该使用std::atomic<int>
(或其他模板参数类型(来保证线程安全。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 为什么比较运算符如此快速
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 单调计数整数的比较安全吗?
- 将无符号的 int 与 std::string::size_type 进行比较是否安全
- 原子增加和比较线程安全
- 在网络上的不同平台上比较boost :: typeIndex type hash_code()是安全的吗?
- 'const'双重复制+比较安全吗?
- 比较操作线程对 std::atomic 变量是安全的吗?
- 将两个 std::vector<cv::P oint> 向量和安全公共点与第三个 std::vector<cv::P oint 进行比较>
- xxx和bool在操作中的不安全混合仅在将值与TRUE进行比较时发出警告
- 按顺序比较C++迭代器安全吗
- 为什么编译器不使无符号与有符号的比较安全?
- 以本地化安全的方式比较C++中的字符串/字符和字符串/字符文本
- 正在使用std::max来比较两个替身是否安全
- 与 std::vector 的指针进行比较以检查相等性是否安全
- 在C, c++中比较布尔变量与1和0是否安全?