@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy。 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 NSObject对象的@property属性时,默认为atomic ...
分类:
其他好文 时间:
2016-07-22 09:56:09
阅读次数:
137
本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic。 我们知道在C++11中引入了mutex和方便优雅的lock_guard。但是有时候我们想要的是性能更高的无锁实现,下面我们来讨论C++11中新增的原子操作类Atomic,我们可以利用它巧妙地实现无锁同步。 ...
分类:
编程语言 时间:
2016-07-20 06:27:51
阅读次数:
283
nonatomic 非原子属性 非线程安全,适合内存小的移动设备(手机,平板...) atomic 原子属性(线程安全,但需要消耗大量资源)针对多线程设计的,为默认值,保证同一时间只有一个线程能够写入;本身就是一把自旋锁;单写多读,单个线程写入,多个线程读取 注意:当重写属性的get与set方法时需 ...
分类:
其他好文 时间:
2016-07-18 18:09:24
阅读次数:
183
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作. 比如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递 ...
分类:
编程语言 时间:
2016-07-12 10:20:20
阅读次数:
151
一、原子和非原子属性 1. OC在定义属性时有nonatomic和atomic两种选择: atomic:原子属性,为setter方法加锁(默认就是atomic); nonatomic:非原子属性,不会为setter方法加锁。 2. nonatomic和atomic的对比 atomic:线程安全,需要 ...
分类:
其他好文 时间:
2016-07-10 21:24:11
阅读次数:
403
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy。 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 NSObject对象的@property属性时,默认为atomic ...
分类:
其他好文 时间:
2016-07-05 20:52:41
阅读次数:
212
主要介绍一下Linux下的互斥与阻塞方面的知识: 1. 原子操作 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 常用原子操作函数举例: atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0 atomic_read(atomic_t *v); //返回 ...
分类:
系统相关 时间:
2016-07-03 13:01:04
阅读次数:
277
AtomicLongFieldUpdater介绍
AtomicLongFieldUpdater可以对指定"类的 'volatile long'类型的成员"进行原子更新。它是基于反射原理实现的。
AtomicLongFieldUpdater示例
// LongTest.java的源码
import java.util.concurrent.atomic.AtomicLongField...
分类:
编程语言 时间:
2016-07-01 11:58:29
阅读次数:
261
以AtomicLong的compareAndSet方法举例。先说结论:如果CPU支持,则基于CPU指令(CMPXCHG8)实现;否则使用ObjectLocker锁实现。 分析过程如下: 该方法在jdk中源代码如下: unsafe是sun.misc.Unsafe的一个实例,Unsafe类在jdk中没有 ...
分类:
编程语言 时间:
2016-06-28 18:08:46
阅读次数:
406
Linux内核同步机制之(一):原子操作 http://www.wowotech.net/linux_kenrel/atomic.html 一、源由 我们的程序逻辑经常遇到这样的操作序列: 1、读一个位于memory中的变量的值到寄存器中 2、修改该变量的值(也就是修改寄存器中的值) 3、将寄存器中... ...
分类:
系统相关 时间:
2016-06-27 19:19:18
阅读次数:
267