一、原子操作
iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件<libkern/OSBase.h>。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。
原子操作是同步的一个简单的形式,它处理简单的数据类型。原子操作的优势是它们不妨碍竞争的线程。对于简单的操作,比如递增一个计数器,原子操作比使用锁具有更高的性能优势。
Mac OS X和iOS包含了许多在32位和64位执行基本的数学和逻辑运算的操作。这些操作都使用了原子版本来操作比较和交换,测试和设置,测试和清理等。查看支持原子操作的列表,参阅/user/include/libkern/OSAtomic.h头文件和参见atomic主页。
- int32_t theValue = 0;
- OSAtomicTestAndSet(0, &theValue);
- // theValue is now 128.
- theValue = 0;
- OSAtomicTestAndSet(7, &theValue);