iOS多线程编程:线程同步总结 NSCondtion
1:原子操作 - OSAtomic系列函数 iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件 <libkern/OSBase.h>。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。 2:锁 - NSLock系列对象 iOS平台下的锁对象为NSLock对象,进入锁通过调用lock函数,解锁调用unlock函数(因为iOS中大部分的线程同步类都继承自NSLocking协议,所以其加锁/解锁的操作基本都为lock/unlock函数),同一个NSLock对象成功调用lock函数后,在其显式unlock之前任何线程都不能再对此NSLock对象加锁,以达到互斥访问的目的。除了lock函数,对NSLock加锁的函数还包括tryLock以及lockBeforeDate函数,lock函数在成功加锁之间会一直阻塞,而tryLock会尝试加锁,如果不成功,不会阻塞,而是直接返回NO,lockBeforeDate则是阻塞到传入的NSDate日期为止。 除了NSLock,iOS还提供了NSRecursive、NSConditionLock类型的锁类型