相同:1,最后结果都是 释放不需要的空间,不同:assign(weak):直接赋值retain(strong):+1,引用一次 调用一次 retainrelease:-1copy:两个变量不共享内存,各有各的内存atomic:原子操作(多线程时使用)nonatomic:非原子操作@autorelea...
分类:
移动开发 时间:
2014-07-30 00:32:32
阅读次数:
397
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2014-07-27 09:50:32
阅读次数:
405
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2014-07-24 22:03:42
阅读次数:
237
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 来看Ato...
分类:
编程语言 时间:
2014-07-22 08:10:35
阅读次数:
196
代码的实现位于文件system/core/include/cutils中http://androidxref.com/4.4.3_r1.1/xref/system/core/include/cutils/atomic.h1617#ifndefANDROID_CUTILS_ATOMIC_H18#def...
分类:
移动开发 时间:
2014-07-19 15:15:16
阅读次数:
275
给急性格的读者: 请参考《Intel 64 and IA32 Architectures Software Develeloper's Manual》。其中有CMPXCHG指令和LOCK指令前缀。或者AMD等其他厂商的开发指南。在多线程编程中,对某一资源的同步操作是保证资源状态一致性的关键。这个需要...
分类:
编程语言 时间:
2014-07-18 10:20:13
阅读次数:
767
在上篇文章《.net中的并行编程-1.基础知识》中列出了在.net进行多核或并行编程中需要的基础知识,今天就来分析在基础知识树中一个比较简单常用的并发数据结构--.net类库中无锁栈的实现。 首先解释一下什么这里“无锁”的相关概念。 所谓无锁其实就是在普通栈的实现方式上使用了原子操作,原子操作的原理...
分类:
Web程序 时间:
2014-07-14 10:55:16
阅读次数:
271
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2014-07-13 23:31:28
阅读次数:
269
Interlocked.Increment 方法:让++成为原子操作;Interlocked.Decrement 方法让--成为原子操作。什么叫原子操作呢。就是不会被别人打断,因为C#中的一个语句,编译成机器代码后会变成多个语句。在多线程环境中,线程切换有可能会发生在这多个语句中间。使用Interl...
分类:
其他好文 时间:
2014-07-09 19:25:39
阅读次数:
206
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2014-07-05 17:44:12
阅读次数:
155