博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】iOS多线程之异步任务+并行队列情况与异步任务+串行队列(主队列)情况...
阅读量:5766 次
发布时间:2019-06-18

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

异步任务+并行队列

把异步任务放到并行队列进行执行,异步任务会在不同的线程中执行。

/*异步执行+并行队列*/    - (IBAction)clickBasic1:(UIButton *)sender {        //全局并行队列        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);                //异步执行        dispatch_async(queue, ^{            for (int i = 0; i<2; i++) {                NSLog(@"task1:%d",i);            }            NSLog(@"task1----%@",[NSThread currentThread]);        });                dispatch_async(queue, ^{            for (int i = 0; i<2; i++) {                NSLog(@"task2:%d",i);            }            NSLog(@"task2----%@",[NSThread currentThread]);        });                dispatch_async(queue, ^{            for (int i = 0; i<2; i++) {                NSLog(@"task3:%d",i);            }            NSLog(@"task3----%@",[NSThread currentThread]);        });            }

运行结果如下。异步任务+并行队列组合情况下,每个任务会在不同的线程中同时执行。

异步任务+串行队列(主队列)

对于异步任务放在串行队列中执行时,任务只会在一个新开的线程中,按照顺序进行执行。

/*异步串行队列*/- (IBAction)clickBasic3:(id)sender {    //创建串行队列    dispatch_queue_t queue = dispatch_queue_create("com.hcios", NULL);        //异步执行    dispatch_async(queue, ^{        for (int i = 0; i<2; i++) {            NSLog(@"task1:%d",i);        }        NSLog(@"task1----%@",[NSThread currentThread]);    });        dispatch_async(queue, ^{        for (int i = 0; i<2; i++) {            NSLog(@"task2:%d",i);        }        NSLog(@"task2----%@",[NSThread currentThread]);    });        dispatch_async(queue, ^{        for (int i = 0; i<2; i++) {            NSLog(@"task3:%d",i);        }        NSLog(@"task3----%@",[NSThread currentThread]);    });}

运行结果如下。可以看到,所有任务都在一个线程中执行,并且完成一个后,再执行下一个。

 

转载于:https://www.cnblogs.com/gfxxbk/p/5503643.html

你可能感兴趣的文章
jQuery|元素遍历
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
OracleLinux安装说明
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
redis 常用命令
查看>>
EdbMails Convert EDB to PST
查看>>
android 资源种类及使用
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>