原子操作 线程安全

之前读《程序员的自我修养》一书,一知半解,仅在单线程下进行了演绎,误以为原子操作本身就是线程安全的。

  1. 为什么误认为原子操作是线程安全的:
    原子操作过程中不可被打断,所以寄存器内的内容就不会被其它线程修改,在原子操作结束后,结果存入内存,才会被切换到别的线程,听起来似乎没有问题。这一系列操作中,原子操作一定能将任务完成,并且返回正确的结果写入内存。

  2. 什么情形下原子操作不是线程安全的:
    当面临多核CPU时,过程就不一样了,当同时对同一变量进行操作时,每个CPU操作的结果无法考虑到另一个CPU的操作,最终结果就会有问题。

  3. 怎么解决原子操作的线程安全问题
    CAS(compare and swap)操作。

你可能感兴趣的:(原子操作 线程安全)