博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 线程锁@synchronized
阅读量:6123 次
发布时间:2019-06-21

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

hot3.png

#import "ViewController.h"@interface ViewController ()/// 销售员01@property (strong, nonatomic) NSThread *thread01;/// 销售员02@property (strong, nonatomic) NSThread *thread02;/// 销售员03@property (strong, nonatomic) NSThread *thread03;/// 票的总数@property (assign, nonatomic) NSInteger ticketCount;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    self.ticketCount = 100;        self.thread01 = [[NSThread alloc] initWithTarget:self selector:@selector(saleTicket) object:nil];    self.thread01.name = @"销售员01";    self.thread02 = [[NSThread alloc] initWithTarget:self selector:@selector(saleTicket) object:nil];    self.thread02.name = @"销售员02";    self.thread03 = [[NSThread alloc] initWithTarget:self selector:@selector(saleTicket) object:nil];    self.thread03.name = @"销售员03";}- (void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event { [self.thread01 start]; [self.thread02 start]; [self.thread03 start];}- (void)saleTicket{ while (1) { @synchronized(self) { // 取出总数 NSInteger count = self.ticketCount; if (count > 0) { self.ticketCount = count -1; NSLog(@"%@卖了一张,还剩下%zd张",[NSThread currentThread],self.ticketCount); } else { NSLog(@"票已经卖完了"); break; } } }}@end

 

转载于:https://my.oschina.net/gwlCode/blog/1626354

你可能感兴趣的文章
微信小程序开发-框架
查看>>
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>