Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要一个小柜台(最多 10 个)。
我不想使用原子(因为原子的开销)。
我可以使用哪种类型?
我可能会进行过早优化,但不幸的是我现在无法模拟完整的生产环境(多线程环境)。
在 Ubuntu x86 上运行
Atomic 是正确的使用方法,也是最快的方法。如果您的架构可以在一条指令中进行原子更新,那么这就是原子类型的实现方式。
如果您只从一个线程写入计数器,而所有其他线程只读取计数器,那么在大多数平台上您可以使用int,因为大多数 CPU 都有原子增量指令,并且将新值写回内存也将是原子的。
int
但是,该标准并不能保证这一点。如果要保证原子性,则需要使用原子。这样做并没有太多开销,因为编译器足够聪明,可以知道增量操作是否需要显式锁定,从而避免开销。