OBjective-C:atomic和nonatomic的区别
2024-09-09 08:32:55
atomic和nonatomic的区别:
atomic: 设置成员变量的@property属性时,默认为atomic,提供多线程安全。因为多线程的缘故,所有的对象在操作成员变量时都是同步的,因此,为了防止一个对象在操作数据时还没有结束就被另一个对象抢走进行篡改,atomic为此提供了多线程安全机制,采用同步加锁的方式,来控制进程的归属权。
即:
{lock} //第一个对象获取操作数据后,给自己的进程加锁,别人在我没有释放锁之前就无法再去抢夺了。
if (property != newValue) {
[property release];
property = [newValue retain];
}
{unlock}//该对象操作完数据后,就释放了同步锁,别人就可以获取这个数据进行自己的操作了。
if (property != newValue) {
[property release];
property = [newValue retain];
}
{unlock}//该对象操作完数据后,就释放了同步锁,别人就可以获取这个数据进行自己的操作了。
说明:锁必须是唯一的。
nonatomic: 设置成员变量的@property属性时,设置nonatomic,禁止多线程。这就直接消除了数据操作过程中被被另一方篡改的可能性。如果不是多线程,一般就采用这种设置。
最新文章
- vertx核心类之VertxImpl
- ClickOnce添加自定义prerequisite
- 用java代码把docx转换成pdf文件
- [.net 面向对象编程基础] (20) LINQ使用
- 修改了/etc/fstab之后出现登录密码输入之后又返回登录界面的问题
- Thinking in Java——笔记(9)
- 用户 'IIS APPPOOL\DefaultAppPool'登录失败
- 安装gstreamer
- MYSQL数据库相关操作---读书笔记分享
- freemarker中的if...elseif...else语句(七)
- 丰富的else语句以及简介的with语句
- iOS 快速排序
- java 网络编程 TCP协议 java 服务器和客户端 java socket编程
- js 简单的进度条
- 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表
- Runloop, 多线程
- js Promise fetch demo
- GUI界面操作-实现简单的记事本
- VS中为非控制台程序提供控制台输出窗口
- jQuery推断浏览器是移动端还是电脑端自己主动跳转
热门文章
- jQuery的data() 和 h5 的 dataset()
- BigDecimal 两种方式
- [ 原创 ]学习笔记-Android 学习笔记 Contacts (一)ContentResolver query 参数详解 [转载]
- 机器学习之路: 初识tensorflow 第一个程序
- BZOJ 2653: middle 主席树 二分
- [LearnOpenGL]照相机的变换、坐标系、摄像机
- codecombat js
- Java外部类可以访问内部类private变量
- Git_自定义Git
- JAVA设计模式之门面模式(外观模式)