原子操作
原子操作类似数据库中的事务,操作中的所有指令要么全部执行,要么全部不执行。
以自增操作为例,a++对应三个CPU指令:
- 从内存将a当前值写入寄存器
- 在寄存器中将a加一
- 将新的a值写入内存
在单核多线程程序中,如果对一个变量的自增操作是原子的,那么就没有必要在自增操作外围加锁了。
在多核多线程程序中,由于自增操作可以在多个CPU中同步执行,即使自增操作是原子的,我们也需要使用锁或其他机制实现访问控制。
参考资料:
原子操作类似数据库中的事务,操作中的所有指令要么全部执行,要么全部不执行。
以自增操作为例,a++对应三个CPU指令:
在单核多线程程序中,如果对一个变量的自增操作是原子的,那么就没有必要在自增操作外围加锁了。
在多核多线程程序中,由于自增操作可以在多个CPU中同步执行,即使自增操作是原子的,我们也需要使用锁或其他机制实现访问控制。
参考资料: