博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios33--线程安全
阅读量:7106 次
发布时间:2019-06-28

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

////  ViewController.m//  05-掌握-线程安全////  多线程下载文件:每个线程下的部分可能是交错的,到时候就拼接不了。除非每个线程下载的不是交错的,而是从头到尾依次分开的,到时候就可以拼接了。#import "ViewController.h"@interface ViewController ()/** 售票员A */@property (nonatomic, strong) NSThread *threadA;/** 售票员B */@property (nonatomic, strong) NSThread *threadB;/** 售票员C */@property (nonatomic, strong) NSThread *threadC;@property (nonatomic, assign) NSInteger totalCount;@end@implementation ViewController-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ //设置中票数 self.totalCount = 100; self.threadA = [[NSThread alloc]initWithTarget:self selector:@selector(saleTicket) object:nil]; self.threadB = [[NSThread alloc]initWithTarget:self selector:@selector(saleTicket) object:nil]; self.threadC = [[NSThread alloc]initWithTarget:self selector:@selector(saleTicket) object:nil]; self.threadA.name = @"售票员A"; self.threadB.name = @"售票员B"; self.threadC.name = @"售票员C"; //启动线程 //@synchronized(self) {
[self.threadA start]; [self.threadB start]; [self.threadC start]; //} }-(void)saleTicket{ while (1) { //锁:必须是全局唯一的 //1.注意枷锁的位置 //2.注意枷锁的前提条件,多线程共享同一块资源 //3.注意加锁是需要代价的,需要耗费性能的 //4.加锁的结果:线程同步 //5.锁定1份代码只用1把锁,用多把锁是无效的 @synchronized(self) { //线程1 //线程2 //线程3 NSInteger count = self.totalCount; if (count >0) { for (NSInteger i = 0; i<1000000; i++) { } self.totalCount = count - 1; //卖出去一张票 NSLog(@"%@卖出去了一张票,还剩下%zd张票", [NSThread currentThread].name,self.totalCount); }else { NSLog(@"不要回公司上班了"); break; } } } }@end

 

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7491325.html,如需转载请自行联系原作者
你可能感兴趣的文章
不同云服务模式下的安全策略解析
查看>>
mysql删除重复数据只保留一条
查看>>
Cubieboard开发环境与Uboot的SD启动卡制作
查看>>
linux中强大且常用命令:find、grep
查看>>
【Objective-C】OC中的数值的概念和常用方法(NSArray和NSMutableArray)
查看>>
linux 系统ubuntu minicom 和cutecom下串口 设置和常见问题。
查看>>
岗位角色管理,打造杰出员工
查看>>
TCP 三次握手 -转载
查看>>
NMath应用教程:如何通过代码访问底层数据和应用函数
查看>>
PHP缓存技术
查看>>
人生苦短,快用Python
查看>>
redhat使用yum命令报错
查看>>
朴素贝叶斯分类算法
查看>>
get与post请求方式的区别
查看>>
OpenFlow协议通信流程解读
查看>>
JAVA中this用法小结
查看>>
Leetcode PHP题解--D19 867. Transpose Matrix
查看>>
Android设置布局背景为白色的三种方法
查看>>
机房建设
查看>>
mysql中的锁
查看>>