美文网首页潮流计算
原子操作 线程安全

原子操作 线程安全

作者: 季天泽 | 来源:发表于2022-02-07 15:02 被阅读0次

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

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

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

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

相关文章

  • 分布式事务

    1、线程安全保证线程安全一般分成两种方式:锁和原子变量原子变量:原子变量能够保证原子性的操作,意思是某个任务在执行...

  • 原子操作 线程安全

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

  • AtomicInteger 类

    自增操作符(++),非原子性,线程不安全。线程安全的计数采用 synchronized 或 AtomicInteg...

  • 2018-07-12

    volatile不能保证原子性,所以用它修饰的变量,如果执行非原子性操作,那不能保证线程安全,比如++操作,但是=...

  • 无标题文章

    原子和非原子操作:原子(atomic)提供多线程安全,是为了防止在为写完的时候被另外的一个线程读取,造成数据错误。...

  • 2018-05-22

    nonatomic的内存管理语义是非原子性的,非原子性的操作本来就是线程不安全,而atomic的操作是原子性的,但...

  • iOS nonatomic与atomic

    nonatomic的内存管理语义是非原子性的,非原子性的操作本来就是线程不安全,而atomic的操作是原子性的,但...

  • Java-可见性、原子性、有序性

    关键字:Java内存模型(JMM)、线程安全、可见性、原子性、有序性 1.线程安全(JMM) 多线程执行某个操作的...

  • 7. Java中的13个原子操作类

    原子操作 一种用法简单、性能高效、线程安全的更新变量的方式,包括原子更新基本类型、原子更新数组、原子更新引用、原子...

  • Java 多线程——线程安全、线程池

    线程不安全的表现 操作共享数据,导致数据错误(非原子操作) i++ (Java 多线程原理[https://www...

网友评论

    本文标题:原子操作 线程安全

    本文链接:https://www.haomeiwen.com/subject/wcsmkrtx.html