OC底层知识点之-多线程(二)GCD上篇

2022-09-26  本文已影响0人  iOS博仔

GCD简介(Grand Central Dispatch)

GCD是纯C语言,提供了非常多的强大函数
GCD是非常高效的多线程开发方式,它并不是Cocoa框架的一部分

GCD优势

1.GCD是苹果公司为多核的并行运算提出的解决方案
2.GCD会自动利用更多的CPU内核(比如双核、四核)
3.GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)
4.开发者只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码【总结】:GCD就是将任务添加到队列,并且指定执行任务的函数。

GCD使用 (GCD的核心就是dispatch队列任务)

1.定义任务
2.将任务添加到队列中

GCD队列

1.主线程队列 (提交的任务将会在主线程完成)

GCD任务

GCD任务就是操作的意思,就是在block块中的代码通过什么方式执行。执行任务有两种方式:同步和异步,两者主要区别是:是否等待队列的任务执行结束,以及是否具备开辟线程的能力。

同步执行(sync)

异步执行 (async)

//还原基础写法
- (void)syncTest{
    dispatch_block_t block = ^{
        NSLog(@"hello GCD");
    };
    //串行队列
    dispatch_queue_t queue = dispatch_queue_create(@"com.hm.cn", NULL);
    //函数
    dispatch_async(queue, block);
}

下面再将队列和任务搭配执行看打印结果:

/**
同步并发
*/
- (void)concurrentSyncTest{
    dispatch_queue_t queue = dispatch_queue_create("HM", DISPATCH_QUEUE_CONCURRENT);
    for (int i = 0;  i < 10 ; i++){
        dispatch_sync(queue, ^{
            NSLog(@"同步并发-%d-%@", i , [NSThread currentThread]);
        });
    }
}
上一篇 下一篇

猜你喜欢

热点阅读