iOS-多线程

11--多线程02--GCD初探

2021-07-04  本文已影响0人  修_远

[TOC]

(一)GCD 介绍

1.1 GCD简介

1.2 函数

将任务添加到队列,并且制定执行任务的函数

1.3 队列

队列

iOS系统提供了主队列和全局队列

1.4 队列和函数

串行队列 并发队列
同步函数
异步函数

1.5 死锁

(二)GCD的应用

2.1 dispatch_async 和 dispatch_sync

测试代码1

dispatch_queue_t queue = dispatch_queue_create("xy", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(queue, ^{
    NSLog(@"2");
    dispatch_sync(queue, ^{
        NSLog(@"3");
    });
    NSLog(@"4");
});
NSLog(@"5");
2020-07-07 23:47:10.420291+0800 001---函数与队列[3440:96357] 1
2020-07-07 23:47:10.421551+0800 001---函数与队列[3440:96357] 5
2020-07-07 23:47:10.421625+0800 001---函数与队列[3440:96598] 2
2020-07-07 23:47:10.421798+0800 001---函数与队列[3440:96598] 3
2020-07-07 23:47:10.421930+0800 001---函数与队列[3440:96598] 4

测试代码2

// 同步队列
dispatch_queue_t queue = dispatch_queue_create("xy", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
// 异步函数
dispatch_async(queue, ^{
    NSLog(@"2");
    NSLog(@"4");
    dispatch_sync(queue, ^{
        NSLog(@"3");
    });
});
NSLog(@"5");

测试代码3

dispatch_queue_t queue = dispatch_queue_create("com.xy.cn", DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue, ^{
    NSLog(@"1");
});
dispatch_async(queue, ^{
    NSLog(@"2");
});
dispatch_sync(queue, ^{
    NSLog(@"3");
});

NSLog(@"0");

dispatch_async(queue, ^{
    NSLog(@"7");
});
dispatch_async(queue, ^{
    NSLog(@"8");
});
dispatch_async(queue, ^{
    NSLog(@"9");
});
上一篇下一篇

猜你喜欢

热点阅读