美文网首页
关于原子性的理解

关于原子性的理解

作者: 我是繁星 | 来源:发表于2018-07-21 11:57 被阅读0次

抛开语言限制说说什么是原子性:

原子性是指一个事物的操作是不可分割的,要么都发生,要么都不发生。

举个栗子🌰:(摘自某位不愿意透露姓名的大神

银行的转账业务就是一个原子性的操作。
张三到银行给李四转账1000元,张三卡里原来有2000元,李四卡里原来也有两千元,那么转账的步骤应该如下:


未命名文件-12.png

如果张三的钱扣完,银行系统瘫痪了,怎么办呢?张三的1000块钱会被会没呢,当然不会。这时候你的钱会退回来。也就是说银行的转账业务要么成功张三(1000元)李四(3000元),要么不发生张三(2000元)李四(2000元)。

那么回到我们OC中:(这里讲的是我们的Objective-c)

看看我们的atomic和nonatomic,我们通常的理解是线程安全和非线程安全,我觉得这只在语言层面上描述原子性造成的结果。

因为atomic描述的是属性赋值,属性赋值中还包含着很多其他操作,如访问对象,赋值等等,natomic是保证这个赋值的整个过程的完整性,并且不受其他线程的干扰,要么成功要么失败。

好文推荐:
《iOS atomic 对象是线程不安全的原因以及与 nonatomic 的区别》(这个名字很奇怪😄,说白了不安全是由OC对象的引用特性造成的,可以看下)
《事务四大特征:原子性,一致性,隔离性和持久性(ACID)》

相关文章

  • 关于原子性的理解

    抛开语言限制说说什么是原子性: 原子性是指一个事物的操作是不可分割的,要么都发生,要么都不发生。 举个栗子?:(摘...

  • iOS 属性关键字

    1.atomic(原子性),可以理解为事物的四个特性中的原子性,保证线程安全。 2.nonatomic (非原子性...

  • 对原子性的理解

    在cpu指令中,有一个原子性的概念,指的是一个操作能否在一条cpu中完成。在多线程环境下,对于不能在一条c...

  • 关系型数据库的ACID原则

    1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成...

  • Java并发编程:深入理解CAS、Atomic原子操作和vola

    转自《深入理解Atomic原子操作和volatile非原子性》https://blog.csdn.net/wbb_...

  • 全面解读volatile和synchronize,助力轻松掌握V

    有部分同学反馈说Volatile修饰的共享变量不具有原子性,从程序角度去理解,volatile变量确实不具有原子性...

  • java内存模型理解

    java内存模型理解 JVM 内存结构:堆、栈、方法区等等。。 原子性:对基本数据类型的变量和赋值操作才是原子性的...

  • 三、volatile

    特征 被volatile修饰的变量,具有两个特征 保证可见性 不保证原子性 禁止指令重排序 关于内存可见性、原子性...

  • Sql Server事务语法及使用方法实例分析

    本文实例讲述了Sql Server事务语法及使用方法。分享给大家供大家参考,具体如下: 事务是关于原子性的。原子性...

  • 关系型数据库的事务ACID特性

    关系型数据库的事务有以下四个特性: A(Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要...

网友评论

      本文标题:关于原子性的理解

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