OC多线程
超大神
努力成为大神的男人
展开
-
01、多线程概念
1、同步1)我们之前写的程序都是从上到下,从左到右的顺序执行代码的2)一个人执行多个任务,也是依次执行的,一个人同一时间只能执行一个任务2、异步多个人可以同时执行任务3、进程1)进程是指系统正在运行的一个应用程序2)每个进程之间是独立的,每个进程均运行在专用的且受保用的内存空间内的3)通过"活动监视器"可以查看Mac系统所开启的进程4、线程1)一个进程是由多个线程组成(一个进程至少有一个线程)2)...原创 2018-05-09 19:49:13 · 156 阅读 · 0 评论 -
16、异步下载图片案例
@interface ViewController ()@property (nonatomic, strong) NSArray *appInfos;//全局队列@property (nonatomic, strong) NSOperationQueue *queue;//图片的缓存池@property (nonatomic, strong) NSMutableDictionary *image...原创 2018-05-10 09:01:04 · 258 阅读 · 0 评论 -
15、摇奖机案例
摇奖机案例@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *lbl1;@property (weak, nonatomic) IBOutlet UILabel *lbl2;@property (weak, nonatomic) IBOutlet UILabel *lbl3;@property (wea...原创 2018-05-10 09:00:41 · 315 阅读 · 0 评论 -
13、自定义NSOperation
//自定义操作//1 创建一个类继承自NSOperation//2 重写main方法,自动释放池//3 定义属性接收参数 , 类方法快速初始化自定义操作//4 取消操作(取消正在执行的操作)//5 断言NSAssert@interface HMDownloaderOperation : NSOperation//要下载图片的地址@property (nonatomic, copy) NSStrin...原创 2018-05-10 08:59:09 · 1296 阅读 · 0 评论 -
12、NSOperation和GCD的区别
1、GCD1)GCD是ios4.0推出的,主要针对多核cpu做了优化,是C语言的结束2)GCD是讲任务(block)添加到队列(串行/并行/全局/主队列), 并且以同步/异步的方式来执行任务的函数3)GCD提供了一些NSOperation不具备的功能a. 一次性执行任务b. 延迟执行c. 调度组2、NSOperation1)NSOperation是ios2.0退出的,但是ios4之后重写...原创 2018-05-10 08:57:46 · 450 阅读 · 0 评论 -
11、NSOperation的其他操作
1、最大并发数1)什么是并发数:同时执行的任务书 比如:同时开3个线程执行3个任务,并发数就是32)最大并发数的相关方法 - (NSInteger) maxConcurrentOperationCount; - (void) setMaxConcurretOperationCount: (NSInteger) cnt;3)执行的过程·把操作添加到队列self.qu...原创 2018-05-10 08:57:23 · 179 阅读 · 0 评论 -
07、GCD简介
1、什么是GCD1)全称是Grand Central Dispatch2)纯C语言,提供了非常强大的函数2、GCD的优势1)GCD是苹果公司为多核的并行运算提供的解决方案2)GCD会自动利用更多的CPU内核(比如双核、四核)3)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)4)程序员只需告诉GCD想要执行什么样的任务,并不需要编写任何和 线程相关的管理代码3、GCD的两个...原创 2018-05-09 19:53:21 · 177 阅读 · 0 评论 -
10、NSOperation简介
1、NSOperation介绍1)是OC语言中基于GCD的面向对象的封装2)使用起来比GCD更简单(面向对象)3)提供了一些用GCD不好实现的功能4)苹果推荐使用,使用NSOperation不用关心线程以及线程的生命周期2、NSOperation子类1)NSOperation是一个抽象类2)NSoperation子类·NSInvocationOperation·NSBolockOperation·...原创 2018-05-09 19:54:50 · 143 阅读 · 0 评论 -
09、GCD的其他操作
1、延迟加载// dispatch_time_t when, 延迟多长时间 精度到纳秒// dispatch_queue_t queue, 队列// dispatch_block_t block 任务dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_g...原创 2018-05-09 19:54:26 · 126 阅读 · 0 评论 -
08、GCD的任务和队列
1、GCD的执行任务方式1)同步的方式执行任务dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);queue:队列block:任务2)异步的方式执行任务dispatch_async(dispatch_queue_t queue, dispatch_block_t block);2、GCD的队列类型1)并发对列(Concurre...原创 2018-05-09 19:54:05 · 171 阅读 · 0 评论 -
06、消息循环
1、什么是消息循环1)RunLoop就是消息循环,每个线程内部都有一个消息循环2)只有主线程的消息循环是默认是开启的,子线程的消息循环默认都不开启的2、消息循环的目的1)保证程序不退出2)负责处理输入事件3)如果没有任何时间发生,使程序处于休眠状态3、消息循环的输入事件Runloop接收输入事件来自于两种不同的源:输入源(input source)定时源(timer source)4、消息循环的模...原创 2018-05-09 19:52:33 · 791 阅读 · 0 评论 -
05、线程同步
interface ViewController ()//总票数@property (nonatomic, assign) int ticketsCount;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.ticketsCount = 10;}- (void)touche...原创 2018-05-09 19:51:39 · 126 阅读 · 0 评论 -
04、线程状态和属性
1、控制线程的状态:1)启动线程- (void) start;线程进入就绪状态,当线程执行完毕后自动进入死亡状态2)暂停(阻塞)线程+ (void) sleepUntiDate:(NSDate *) date;+ (void) sleepForTimeInterval:(NSTimeInterval) ti;线程进入阻塞状态3)停止线程+ (void) exit;线程进入死亡状态注意:一旦线程停止...原创 2018-05-09 19:51:14 · 166 阅读 · 0 评论 -
03、NSThread
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //方式1 //NSThread *thread = [[NSThread alloc] initWithTarget:self selecto...原创 2018-05-09 19:50:30 · 111 阅读 · 0 评论 -
02、pthread
1、导入头文件#import <pthread/pthread.h>2、代码 //第一个参数 线程编号的地址 //第二个参数 线程的属性 //第三个参数 线程要执行的函数void * (*) (void *) // int * 指向int类型的指针 void * 指向任何类型的指针 有点类似OC中的id //第四个参数 要执行的函数的参数...原创 2018-05-09 19:49:53 · 130 阅读 · 0 评论 -
14、计时器
计时器NSTimer叫做“定时器”,它的作用如下在指定的时间执行指定的任务每隔一段时间执行指定的任务调用下面的方法就会开启一个定时任务+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector use...原创 2018-05-10 08:59:37 · 264 阅读 · 0 评论