atomic and nonatomic
2018-10-08 本文已影响0人
fordG
- atomic 修饰的对象会保证setter和getter的完整性, 任何线程访问它都可以得到一个完整的初始化的对象,要保证操作的完成速度比较慢。atomic比noatomic安全, 但也不是绝对的线程安全。当多个线程同时调用set和get时,就可能导致获取的对象值不一样,想要线程绝对安全, 就要使用@synchronized:
/* @synchronized 的作用是创建一个互斥锁,它防止不同的线程同时执行同一段代码, 保证此时没有其它线程
对self对象进行修改。这个是objective-c的一个锁定令牌,防止self
对象在同一时间内被其它线程访问,起到线程的保护作用
*/
@synchronized (self) {
[_elements addObject:element];
}
- nonatomic修饰的对象不保证setter和getter的完整性, 所以多个线程访问它时, 它可能返回未初始化的对象, 速度更快,线程不安全。