首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
0422 线程同步/同步锁防止脏数据
时间:
2015-04-23 01:56:40
阅读:
146
评论:
0
收藏:
0
[点我收藏+]
标签:
如果不加同步锁,代码如下:
#import "ViewController.h"
@interface ViewController ()
{
NSInteger _money;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_money = 100;
NSThread *t1 = [[NSThread alloc]initWithTarget:self selector:@selector(doThing) object:nil];
NSThread *t2 = [[NSThread alloc]initWithTarget:self selector:@selector(doThing) object:nil];
NSThread *t3 = [[NSThread alloc]initWithTarget:self selector:@selector(doThing) object:nil];
NSThread *t4 = [[NSThread alloc]initWithTarget:self selector:@selector(doThing) object:nil];
t1.name = @"我是--t1";
t2.name = @"我是--t2";
t3.name = @"我是--t3";
t4.name = @"我是--t4";
[t1 start];
[t2 start];
[t3 start];
[t4 start];
}
-(void)doThing{
for(int i=0;i<3;i++){
[self getMoney:10];
}
}
-(void)getMoney:(NSInteger)money{
// 查余额
if(_money >= money){
[NSThread sleepForTimeInterval:2];
_money -= money;
NSLog(@"%@----余额 : %ld",[NSThread currentThread],_money);
}
}
// 打印结果,有随机性: 明显脏数据
// 改进:
线程锁:
1. 创建锁对象NSLock,并实例化
_lockCondition = [[NSLock alloc]init];
2. 判断是否有锁,没有就进入并锁住.
if ([_lockCondition tryLock]) {
// 在里面做取钱操作
// 取钱完成后解锁
[_lockCondition unlock];
}
改进后:总共12次,只有4次取钱操作成功了.
0422_复习_线程同步.zip
25.0 KB
// 需求: 如果确实要取完钱为止
应该按如下方式:
//加锁,操作完成后解锁.
// 可见: 加锁后, 操作者和操作线程都是有序的...
0422 线程同步/同步锁防止脏数据
标签:
原文地址:http://www.cnblogs.com/toxicanty/p/4449148.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!