GCD其他实用场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCD其他实用场景相关的知识,希望对你有一定的参考价值。

GCD线程间通信

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        
        NSLog(@"开来一个新线程--%@",[NSThread currentThread]);
        
        // 回到主线程显示图片
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"--imageView--%@", [NSThread currentThread]);
            self.iconView.backgroundColor = [UIColor redColor];
        });
    });
GCD组线程

当需要在两个线程的任务执行完后,执行另一个动作,就将这两个线程放到线程组中

// 创建一个组
    dispatch_group_t group = dispatch_group_create();
    
    // 开启一个线程 执行费时操作1
    __block int num1;
    dispatch_group_async(group, global_queue, ^{
        NSLog(@"执行费时操作1");
        num1 = 30;
    });
    
    // 开启一个线程 执行费时操作2
    __block int num2;
    dispatch_group_async(group, global_queue, ^{
        NSLog(@"执行费时操作2");
        num2 = 44;
    });
    
    // 费时操作1、费时操作2 会同时执行
    
    // 等group中的所有任务都执行完毕, 再回到主线程执行其他操作
    dispatch_group_notify(group, main_queue, ^{
        NSLog(@"回到主线程敢点活");
        NSLog(@"num1 + num2 = %d",num1 + num2);
        self.countResult.text = [NSString stringWithFormat:@"%d",num1+ num2];
    });
GCD实现延迟执行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"这是延迟打印出来的东西,还可以自定义线程哦");
    });
GCD实现 代码只执行一次
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
       NSLog(@"这句代码只会执行一次");
    });
}

 

以上是关于GCD其他实用场景的主要内容,如果未能解决你的问题,请参考以下文章

NotFound:404 未找到(错误代码:10011):未知角色

网站服务器经常性出现404错误了怎么办?

Linux实用命令

HDU 5902 GCD is Funny DP

对 https 的 GET 请求 - NotFound。 wp7

this.http.post() 给出 404 (Not Found) 错误