GCD简单使用

GCD是苹果封装的c语言级别的多线程机制

1. 在主线程上异步执行一段代码

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

2. 在主线程上同步执行一段代码

dispatch_sync(dispatch_get_main_queue(), ^{
         NSLog(@"%@",[NSThread currentThread]);
        });

3.获取主线程缺省的队列

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSLog(@"%@",[NSThread currentThread]);
    });
    
    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
    //此缺省队列在运行的时候由系统来分配管理,如果主线程忙,则系统会自动创建一个新的线程队列。否则就是一个其他的线程队列</span>


4.创建其他线程队列
dispatch_queue_t queue = dispatch_queue_create("other.queue", NULL);  //同步其他线程队列
    dispatch_queue_t queue = dispatch_queue_create("other.queue", DISPATCH_QUEUE_SERIAL);   //同步其他线程队列
    dispatch_queue_t queue = dispatch_queue_create("other.queue", DISPATCH_QUEUE_CONCURRENT); // 异步其他线程队列</span>
    dispatch_async(queue, ^{
        NSLog(@"%@",[NSThread currentThread]);
    });

 
 
 5.异步执行一段代码,执行完成后通知主线程  

dispatch_queue_t queue = dispatch_queue_create("other.queue", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue, ^{
        
        // 执行其他处理
        NSLog(@"执行其他处理--%@",[NSThread currentThread]);
        
        [NSThread sleepForTimeInterval:2.0];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            // 执行完毕
            NSLog(@"执行完毕--%@",[NSThread currentThread]);
        });
    });

6. 延时执行

-(void)afterDelay:(NSTimeInterval )timerInterval block:(void (^)())block{
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timerInterval*NSEC_PER_SEC));
    dispatch_after(time, dispatch_get_main_queue(), ^{
        block();
    });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值