-1

我需要一个小柜台(最多 10 个)。

我不想使用原子(因为原子的开销)。

我可以使用哪种类型?

我可能会进行过早优化,但不幸的是我现在无法模拟完整的生产环境(多线程环境)。

在 Ubuntu x86 上运行

4

2 回答 2

6

Atomic 是正确的使用方法,也是最快的方法。如果您的架构可以在一条指令中进行原子更新,那么这就是原子类型的实现方式。

于 2012-12-04T19:01:19.700 回答
0

如果您只从一个线程写入计数器,而所有其他线程只读取计数器,那么在大多数平台上您可以使用int,因为大多数 CPU 都有原子增量指令,并且将新值写回内存也将是原子的。

但是,该标准并不能保证这一点。如果要保证原子性,则需要使用原子。这样做并没有太多开销,因为编译器足够聪明,可以知道增量操作是否需要显式锁定,从而避免开销。

于 2012-12-04T18:52:09.203 回答