`
yangping_Account
  • 浏览: 191746 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

GCD&NSOperation

 
阅读更多

GCD是基于c的底层api,NSOperation属于object-c类。相对于GCD :

1,NSOperation拥有更多的函数可用,具体查看api。
2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系。
3,有kvo,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)。
4,NSOperationQueue可以方便的管理并发、NSOperation之间的优先级。
5GCD主要与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_CONCURRENTDISPATCH_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");

        });

    });

分享到:
评论

相关推荐

    使用GCD和NSOperation的自我感悟(部分用法和tips)

     NSOperation和NSOperationQueue:其实出现得比GCD更早,但是GCD出现以后苹果在GCD的基础上对NSOperation进行了重写,使其对象化,符合了大众开发者的习惯。作为更高层的技术,NSOperation在处理依赖关系、控制各种...

    swift-这里详细介绍了iOS多线程NSThreadGCDNSOperation的使用

    本教程将深入探讨Swift中的三种主要多线程技术:NSThread、GCD(Grand Central Dispatch)以及NSOperation。这三者都有其独特的优势和适用场景,了解并熟练掌握它们能让你的iOS应用更加高效和流畅。 首先,我们来看...

    iOS 多线程NSoperation

    NSOperation是Apple提供的一个高级多线程框架,它基于GCD(Grand Central Dispatch)并提供了更强大的功能和灵活性。本篇文章将深入探讨iOS多线程中的NSOperation及其相关知识点。 一、NSOperation简介 NSOperation...

    演示多线程加载图片NSThread NsOperation GCD

    本教程将重点讲解三种多线程技术:NSThread、NSOperation和GCD(Grand Central Dispatch),以及如何用它们来实现图片的异步加载。 首先,我们来看`NSThread`。`NSThread`是Apple提供的轻量级线程管理类,允许...

    NSOperation

    `NSOperation`类是一个抽象基类,它扩展了GCD(Grand Central Dispatch)的队列模型,添加了更多的控制功能和状态管理。相比于直接使用GCD,`NSOperation`提供了更丰富的功能,如依赖关系设置、取消操作、操作的状态...

    iOS并发编程指南.pdf.zip

    本文将深入探讨iOS并发编程的几个核心概念:GCD(Grand Central Dispatch)、NSOperation和NSOperationQueue,帮助开发者理解并掌握这些技术。 首先,让我们来了解GCD。GCD是Apple为多核处理器设计的一种异步编程...

    NSOperation例子

    NSOperation是基于GCD(Grand Central Dispatch)的一个抽象层,它允许开发者以更面向对象的方式处理并发任务。在这个“NSOperation例子”中,我们可能看到如何使用NSOperation来组织和管理异步操作。 首先,...

    CocoaheadsHBAsyncSearch:一个 iOS 演示项目,展示了在输入 UITextField 时进行异步实时搜索的两种方式(GCD 和 NSOperation)

    CocoaheadsHBA 同步搜索一个 iOS 演示项目,展示了在输入 UITextField 时进行异步搜索的两种方法。 使用标准的 Grand Central Dispatch 调用和 NSOperations 进行一次实时搜索。 您可以轻松比较并查看它是如何完成的...

    iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD

    ### iOS多线程编程技术详解:NSThread、Cocoa NSOperation、GCD #### 一、多线程基本概念 1. **进程**:在移动设备(如iPhone)上,每一个应用程序都可以被视为一个独立的进程。每个进程都会有一个主线程(main ...

    iOS 线程资料汇总

    不过,NSThread的使用相对复杂,需要手动管理线程的生命周期,因此在大多数情况下,推荐使用GCD或NSOperation。 五、线程安全与锁 在多线程环境中,数据的共享可能会引发竞态条件,导致数据不一致。为了解决这个...

    iOS多线程编程

    本文将深入探讨iOS中的多线程编程,包括GCD(Grand Central Dispatch)、NSOperation、NSThread的使用,以及异步和同步下载、Block的运用,以及ASIHttpRequest类库的使用。 首先,GCD是Apple推出的一种多线程解决...

    同步和异步的NSOperation的Demo

    这可以通过在NSOperation的`main`方法中启动一个GCD异步队列或使用URLSession来完成。 5. 回调处理:异步操作完成后,可能需要在回调中更新UI或其他操作。这通常通过KVO(Key-Value Observing)或闭包(block)实现...

    IOS多线程编程的3种实现方法

    Grand Centeral Dispatch(GCD) NSOperation和NSOperationQueue 1.NSThread 这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理线程的生命周期,线程同步。经常使用NSThread进行...

    iOS开发 - 第04篇 - 网络 - 01 - NSOperation & 网络基础

    与直接使用线程或GCD(Grand Central Dispatch)相比,NSOperation更易于管理依赖关系和取消操作。它允许开发者创建自定义的操作类,以封装复杂的任务,如网络请求。NSOperationQueue则负责管理和调度这些操作,可以...

    GCD总结代码

    在实际开发中,GCD的使用往往结合其他技术,如NSOperation和NSOperationQueue,它们提供了更高级别的抽象,可以更好地控制任务依赖关系和优先级。GCD是iOS和macOS开发中的强大工具,合理运用能极大地提升应用的性能...

    iOS多线程应用开发中使用NSOperation类的基本方法

    与直接使用GCD(Grand Central Dispatch)相比,NSOperation提供了更丰富的特性,如依赖管理、取消任务、操作优先级等。要使用NSOperation,通常需要将其子类化或者利用NSInvocationOperation和NSBlockOperation。 ...

    iOS高级程序员进阶——多线程编程核心技术模式篇

    在iOS开发中,实现多线程的的方式有很多种,常用的有pthread、NSThread、GCD与NSOperation。在实际应用中,多线程技术也有着非常多的使用场景,比如异步的网络请求、异步的图片加载、后台执行复杂任务等等。 在iOS...

    iOS-多线程之NSOperation - iOS知识库1

    iOS提供了多种实现多线程的方式,包括NSThread、GCD(Grand Central Dispatch)以及NSOperation和NSOperationQueue。 NSOperation是苹果提供的一种更加面向对象的多线程解决方案,它比GCD更易于理解和使用,特别是...

Global site tag (gtag.js) - Google Analytics