美文网首页
4.多任务

4.多任务

作者: LucXion | 来源:发表于2021-09-26 11:11 被阅读0次

    多任务最基本的形式就是运行循环,运行循环可以理解为一个大的do/while循环,它运行在某个线程中,从各种事件队列中取得一个事件(每次一个),然后把它分派给合适的监听器

    通常项目中引入少量长期线程来处理网络请求、数据库操作、计算,这意味着加锁,加锁代价昂贵,并且可能导致大量bug。如果创建短期线程,虽然对锁的需求降低了,但是创建线程成本很高,我们需要管理一个线程池。操作一般有依赖关系,所以我们期望有队列,如果能让 操作系统来处理线程池和队列 就更好了,这就是 NSOperation。你不用操心信号量和互斥锁机制。GCD 常用栅栏、调度组。

    分派队列是严格的先进先出结构,如果要在队列中使用优先级或者调整块的顺序,必须使用NSOperation

    分派队列就是队列,队列不是线程,队列也不接受块,队列组织块。dispatch_async不会让块运行,只是将块 添加 到队列中

    高优先级队列插队

        // 
        dispatch_queue_t low = dispatch_queue_create("low", DISPATCH_QUEUE_SERIAL);
        dispatch_queue_t high = dispatch_queue_create("high", DISPATCH_QUEUE_SERIAL);
        dispatch_set_target_queue(low, high);
        dispatch_async(low, ^{
            NSLog(@"低优先级区块%ld",(long)self.time);
        });
        dispatch_suspend(low);
        dispatch_async(high, ^{
            NSLog(@"高优先级区域%ld",(long)self.time);
            dispatch_resume(low);
        });
    

    相关文章

      网友评论

          本文标题:4.多任务

          本文链接:https://www.haomeiwen.com/subject/surqnltx.html