多线程

    dispatch_queue_t queue=dispatch_queue_create("luoliping", DISPATCH_QUEUE_SERIAL);
    
    dispatch_async(queue, ^{
        NSLog(@"%@",[NSThread currentThread]);
        
    });
    
    dispatch_suspend(queue);
    dispatch_resume(queue);

    dispatch_async(queue, ^{
        NSLog(@"%@",[NSThread currentThread]);

    });
    
    dispatch_async(queue, ^{
        NSLog(@"%@",[NSThread currentThread]);
        
    });
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSLog(@"2-%d",[NSThread isMainThread]);
        
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"2-%d",[NSThread isMainThread]);
            //刷新表
            [_tableView reloadData];
        });
    });

 

NSOperation和GCD的区别

  • NSTread:oc语言,面向对象,简单易用,可直接操作线程对象 ,线程生命周期由程序员管理
  • GCD的使用更轻量级,充分利用设备的多核,线程生命周期自动管理
  • 而NSOperation作为对象提供了更丰富的API,在NSOperationQueue中,可以随时取消要准备执行的任务,能够设置NSOperation的priority(优先级),使之按顺序执行
  • GCD只支持FIFO的队列,NSOperationQueue可以很方便的调整执行顺序,可以添加依赖设置最大并发数量。
  • KVO能应用在NSOperation中,以监听一个Operation是否完成或取消,这样能比GCD更加有效地掌控我们执行的后台任务
  • NSOperation通过继承,可以提高代码的复用度,这比GCD更有自由度和扩展性
  • NSOperationQueue支持KVO,可以检测Operation是否正在执行,是否结束,是否取消。

任务之间不太相互依赖,选用GCD;

任务之间有依赖,或者要监听任务的执行情况:NSOperationQueue

 



 

 

 

http://www.cocoachina.com/ios/20180531/23605.html

gcd面试向

 

https://www.jianshu.com/p/1eecfca332f3

 写的挺好的

posted @ 2016-01-28 10:01  电蚊拍  阅读(134)  评论(0编辑  收藏  举报