zoukankan      html  css  js  c++  java
  • 刀哥多线程之主队列gcd-06-main_queue

    主队列

    特点

    • 专门用来在主线程上调度任务的队列
    • 不会开启线程
    • 先进先出的方式,在主线程空闲时才会调度队列中的任务在主线程执行
    • 如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不会被调度

    队列获取

    • 主队列是负责在主线程调度任务的
    • 会随着程序启动一起创建
    • 主队列只需要获取不用创建
    dispatch_queue_t queue = dispatch_get_main_queue();

    主队列演练

    • 主队列,异步执行
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [self gcdDemo1];
    
        [NSThread sleepForTimeInterval:1];
        NSLog(@"over");
    }
    
    - (void)gcdDemo1 {
    
        dispatch_queue_t queue = dispatch_get_main_queue();
    
        for (int i = 0; i < 10; ++i) {
            dispatch_async(queue, ^{
                NSLog(@"%@ - %d", [NSThread currentThread], i);
            });
            NSLog(@"---> %d", i);
        }
    
        NSLog(@"come here");
    }

    主线程空闲时才会调度队列中的任务在主线程执行

    • 主队列,同步执行
    // MARK: 主队列,同步任务
    - (void)gcdDemo6 {
        // 1. 队列
        dispatch_queue_t q = dispatch_get_main_queue();
    
        NSLog(@"!!!");
    
        // 2. 同步
        dispatch_sync(q, ^{
            NSLog(@"%@", [NSThread currentThread]);
        });
    
        NSLog(@"come here");
    }

    主队列主线程相互等待会造成死锁

  • 相关阅读:
    根据修改时间来获取文件
    juery学习总结——例子
    juery实现贪吃蛇的游戏
    juery学习总结(二)——juery操作页面元素
    juery学习总结(一)——juery选择器
    装饰器
    58同城招聘_爬虫解码ncs--#&X
    断点调试_PDB
    Nginx入门
    Windows环境下nginx的安装
  • 原文地址:https://www.cnblogs.com/jiahao89/p/5118286.html
Copyright © 2011-2022 走看看