博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC 线程操作 - GCD队列组
阅读量:6710 次
发布时间:2019-06-25

本文共 3352 字,大约阅读时间需要 11 分钟。

1.队列组两种使用方法

2.队列组等待 wait

/** 新方法 队列组一般用在在异步操作,在主线程写队列组毫无任何作用 */- (void)GCD_Group_new_group___notify{    dispatch_queue_t queue = dispatch_queue_create("11", DISPATCH_QUEUE_CONCURRENT);    dispatch_queue_t globalqueue = dispatch_get_global_queue(0, 0);    dispatch_group_t group = dispatch_group_create();    /*     1.封装任务     2.把任务加到队列     3.会监听任务的执行情况     */    dispatch_group_async(group, globalqueue, ^{ NSLog(@"1111---%@---", [NSThread currentThread]); }); dispatch_group_async(group, globalqueue, ^{ NSLog(@"22222---%@---", [NSThread currentThread]); }); dispatch_group_async(group, globalqueue, ^{ NSLog(@"333---%@---", [NSThread currentThread]); }); // 一定要加上这行,不然不起任何作用 dispatch_group_notify(group, globalqueue, ^{ NSLog(@"完成----4444---%@---", [NSThread currentThread]); }); /* 打印结果: 2018-06-28 10:18:44.191407+0800 5线程操作-GCD-快速迭代[7808:56262] 333---
{number = 4, name = (null)}--- 2018-06-28 10:18:44.191409+0800 5线程操作-GCD-快速迭代[7808:56266] 1111---
{number = 3, name = (null)}--- 2018-06-28 10:18:44.191434+0800 5线程操作-GCD-快速迭代[7808:56264] 22222---
{number = 5, name = (null)}--- 2018-06-28 10:18:44.191758+0800 5线程操作-GCD-快速迭代[7808:56264] 完成----4444---
{number = 5, name = (null)}--- */
//DISPATCH_TIME_FOREVER :等待队列所有任务执行完后 执行下面代码后面的内容    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);    NSLog(@"执行完了");    /*     打印结果:     2018-06-28 10:58:34.631990+0800 5线程操作-GCD-快速迭代[8500:86081] 1111---
{number = 3, name = (null)}--- 2018-06-28 10:58:34.632041+0800 5线程操作-GCD-快速迭代[8500:86084] 22222---
{number = 4, name = (null)}--- 2018-06-28 10:58:34.632065+0800 5线程操作-GCD-快速迭代[8500:86080] 333---
{number = 5, name = (null)}--- 2018-06-28 10:58:34.633261+0800 5线程操作-GCD-快速迭代[8500:86052] 执行完了 2018-06-28 10:58:34.633284+0800 5线程操作-GCD-快速迭代[8500:86080] 完成----4444---
{number = 5, name = (null)}--- */
}

 

//老式写法
- (void)GCD_GroupDemo_old___enter_leave{    dispatch_queue_t queue = dispatch_queue_create("11", DISPATCH_QUEUE_CONCURRENT);    dispatch_queue_t globalqueue = dispatch_get_global_queue(0, 0);    dispatch_group_t group = dispatch_group_create();    dispatch_group_enter(group);            // 旧 写法    dispatch_group_async(group, globalqueue, ^{        NSLog(@"离开---%@---", [NSThread currentThread]);        dispatch_group_leave(group);    });    dispatch_group_async(group, globalqueue, ^{        NSLog(@"222---%@---", [NSThread currentThread]);    });    dispatch_group_async(group, globalqueue, ^{        NSLog(@"333---%@---", [NSThread currentThread]);    });        dispatch_group_async(group, globalqueue, ^{        NSLog(@"111---%@---", [NSThread currentThread]);    });    /*     2018-06-28 10:25:06.997243+0800 5线程操作-GCD-快速迭代[7942:62493] 离开---
{number = 3, name = (null)}--- 2018-06-28 10:25:06.997286+0800 5线程操作-GCD-快速迭代[7942:62491] 333---
{number = 5, name = (null)}--- 2018-06-28 10:25:06.997306+0800 5线程操作-GCD-快速迭代[7942:62489] 111---
{number = 6, name = (null)}--- 2018-06-28 10:25:06.997287+0800 5线程操作-GCD-快速迭代[7942:62492] 222---
{number = 4, name = (null)}--- */}

转载于:https://www.cnblogs.com/qingzZ/p/9237427.html

你可能感兴趣的文章
A.华华听月月唱歌
查看>>
Feeling something wrong
查看>>
请求转发和重定向的区别及应用场景分析
查看>>
评论的延迟加载
查看>>
Skin++ 皮肤库 CCheckListBox MFC 界面风格
查看>>
学习,其实没有计划可言
查看>>
lr_abort()、exit(-1) 和 return-1之间的区别
查看>>
关于接口
查看>>
redis安装部署
查看>>
openstack-on-centos7之环境准备
查看>>
外国文学最佳中译本合集-选
查看>>
关于this的指向问题
查看>>
我在 impress.js 中学到的小套路
查看>>
notepad++之TextFX插件
查看>>
静态数码管——小白的单片机笔记
查看>>
文件处理之处理模式及其黑魔法
查看>>
基于FPGA的电压表与串口通信(下)
查看>>
How to Allow Apps from Anywhere in macOS Gatekeeper (Mojave, Sierra, High Sierra)
查看>>
Windows 下目录切换以及挂载小技巧
查看>>
读取STGMEDIUM中的数据
查看>>