zoukankan      html  css  js  c++  java
  • 多线程

        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

     写的挺好的

  • 相关阅读:
    Ubuntu18.04 Hadoop Standalone
    Shiro安全框架
    链表中环的的入口节点
    二维数组中的查找
    ElasticSearch快速入门
    logback日志配置
    RabbitMQ进阶笔记
    RabbitMQ入门笔记
    JUC-Lock锁及常用工具类
    Java中的线程池
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/5165295.html
Copyright © 2011-2022 走看看