单调计数整数的比较安全吗?

Is a comparison on monotonic count integer safe?

本文关键字:安全 比较 整数 单调计      更新时间:2023-10-16

我知道在多线程环境中这样做是不安全的:

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>(或其他模板参数类型(来保证线程安全。