博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用atomic一定是线程安全的吗?
阅读量:7176 次
发布时间:2019-06-29

本文共 594 字,大约阅读时间需要 1 分钟。

hot3.png

atomic并不能达到真正的线程安全,atomic只是对setter和getter方法加锁,如下所示

#import 
@interface Person : NSObject@property (copy) NSString *name;@endThread A:p.name = @"Rob";Thread B:p.name = @"Robert";Thread A:label.string = p.name; // 可能读取的数据是Robert

可能会出现这样的情况:线程A刚修改了name的值,正要读取name的值,但是就在读取前的一瞬间name被线程A修改了。因此要想实现真正的线程安全,需要对对象进行加锁,读取操作结束的时候再开放给其他线程访问

Thread A:[p lock];// Thread B 不能访问p对象p.name = @"Rob";NSString *name = p.name;[p unlock];Thread B:[p lock];// Thread A 不能访问p对象[p unlock];

 

p.name = @"Rob";NSString *name = p.name;

应该在一个共有的方法里面,所有线程都会调用这个方法

 

转载于:https://my.oschina.net/jlongtian/blog/831072

你可能感兴趣的文章
进阶-中小型网络构建-二层VLAN技术详解配实验步骤
查看>>
LVM逻辑卷管理
查看>>
java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码
查看>>
通俗讲解边缘计算,抓住信息革命的浪潮
查看>>
关于适配这件小事的前世今生
查看>>
用TMG搭建×××服务器(四)---基于PPTP的站点到站点×××
查看>>
datatables表头与数据无法对齐的解决方案
查看>>
Cisco 路由器 secondary address实现RIPV1不连续子网
查看>>
每天一个linux命令(14):head 命令
查看>>
通过 Apache 配置 Rewrite 支持 .htaccess
查看>>
如何从硬盘安装WIN7原版镜像?
查看>>
ceph学习笔记之六 数据读写过程
查看>>
为UC做准备:准备Exchange 2010的先决条件
查看>>
Eclipse快捷键大全(转载)
查看>>
weblogic启动脚本
查看>>
cPanel推出测试免费试用
查看>>
Wireshark的https代理抓包(whistle中间人代理)
查看>>
redhat下安装Wineqq2012
查看>>
linux下配置pptp 客户端
查看>>
java发送短信至手机
查看>>