Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。
计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。
通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成)。
DK1.5的原子包:java.util.concurrent.atomic
这个包里面提供了一组原子类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择
继续阅读 »
iOS开发中使用@property声明属性时,经常用到atomic与nonatomic两个关键字...
继续阅读 »
原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。
由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常高的。。
那如何使用原子操作了,各个平台下都有相关api提供了支持,并且向gcc、clang这些编译器,也提供了编译器级的__builtin接口进行支持
windows的Interlockedxxx和Interlockedxxx64系列api
macosx的OSAtomicXXX系列api
gcc的__sync_val_compare_and_swap和__sync_val_compare_and_swap_8等__builtin接口
x86和x86_
继续阅读 »