GCD是基于c的底层api,NSOperation属于object-c类。相对于GCD :
1,NSOperation拥有更多的函数可用,具体查看api。
2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系。
3,有kvo,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)。
4,NSOperationQueue可以方便的管理并发、NSOperation之间的优先级。
5,GCD主要与block结合使用。
/ /**< 自定义queue,默认串行: NULL == DISPATCH_QUEUE_SERIAL*/
/**< label:标签,用于标注queue*/
dispatch_queue_t queue = dispatch_queue_create("label", NULL);
dispatch_async(queue, ^{
NSLog(@"test");
});
/**< 自定义queue,并行或串行: DISPATCH_QUEUE_CONCURRENT或DISPATCH_QUEUE_SERIAL*/
dispatch_queue_t serial_queue = dispatch_queue_create("标签", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(serial_queue, ^(){
sleep(5);
NSLog(@"block_1"); // 尽管为异步调用且延迟3秒,但如果在serial队列中,block_1仍然先于block_2被打印出来
});
dispatch_async(serial_queue, ^(){
NSLog(@"block_2");
});
/**< 延迟执行*/
/**< (int64_t)(delayInSeconds * NSEC_PER_SEC):转换成毫秒*/
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSLog(@"5s delay");
});
/**< 常用的异步并发执行*/
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
sleep(5);
NSLog(@"block_1");
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
NSLog(@"block_2");
});
/**< 异步并回调主线程,常用ui更新*/
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"to do with ui");
});
});
相关推荐
NSOperation和NSOperationQueue:其实出现得比GCD更早,但是GCD出现以后苹果在GCD的基础上对NSOperation进行了重写,使其对象化,符合了大众开发者的习惯。作为更高层的技术,NSOperation在处理依赖关系、控制各种...
这里详细介绍了iOS多线程 NSThread,GCD,NSOperation的使用。看我就够了!
CocoaheadsHBA 同步搜索一个 iOS 演示项目,展示了在输入 UITextField 时进行异步搜索的两种方法。 使用标准的 Grand Central Dispatch 调用和 NSOperations 进行一次实时搜索。 您可以轻松比较并查看它是如何完成的...
多线程加载图片
IOS GCD与NSOperation 对比学习
iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
iOS并发编程指南, 深入讲解iOS在编发编程中常用的GCD、NSOperation、NSOperationQueue的使用原理
对iOS的多线程方式做的总结;Pthreads,NSThread,GCD,NSOperation/NSOperationQueue
在iOS开发中,实现多线程的的方式有很多种,常用的有pthread、NSThread、GCD与NSOperation。在实际应用中,多线程技术也有着非常多的使用场景,比如异步的网络请求、异步的图片加载、后台执行复杂任务等等。 在iOS...
目标:block执行过程中,self不会释放;执行完可以释放。 最初 block中直接使用self会强引用。 self.myBlock = ^() { [self doSomething];...一般使用GCD或NSOperation时使用的内联block是不会出现循环
(1)优点:NSThread 比GCD、NSOperation都轻量级 (2)缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销 第一种是隐藏创建,有以下几种方式: (1)多用于串行:- (id)...
Grand Centeral Dispatch(GCD) NSOperation和NSOperationQueue 1.NSThread 这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理线程的生命周期,线程同步。经常使用NSThread进行...
香蕉套装 BananaKit 是从应用商店中一些最大和最成功的应用程序中提取的常见模式和工具的抽象抽象。... AsyncBanana:易于使用的 GCD 和 NSOperation 包装器 最初由开发,也是谈论代码不可或缺的一堆概念。
iOS多线程编程,GCD的使用,NSOperation的使用,NSThread的使用,异步下载,同步下载,block的使用,ASIhttprequest类库的使用
给大家介绍在IOS中为什么使用多线程及多线程实现的三种方法,基本上使用这三种方法实现多线程(NSThread Grand Centeral Dispatch(GCD) NSOperation和NSOperationQueue),感兴趣的朋友可以参考下本
熟练掌握GCD,NSOperation 的使用. 熟练使用代理模式 、单利、工厂模式、MVC、Notification以及KVC/KVO. 熟练使用代码和 XIB进行自动布局,对 StoryBoard 有所了解.熟练使用 Masonry 等自动布局库 熟悉 Json 解析, ...
GCMutiThreadDemo 麻省理工学院执照 版权所有(c)2015年。...本demo是对多线程(GCD,NSOperation)的常用操作的制作和GCD的理解,部分内容转换网络以及个人的见解,在此之后特别感谢无私奉献的人们,如
ios多线程开发的常用四种方式和基本使用,pthread、NSThread、NSOperation\NSOperationQueue、GCD
关于iOS 多线程编程知识点,iOS 多线程 NSThread NSOperation GCD