博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阻塞式线程
阅读量:6432 次
发布时间:2019-06-23

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

 

需求:有5个任务.前两个 同时执行, 后两个也同时执行
异步函数 + 并发队列
因为并发队列执行的时候,是没有顺序的,所以才会有前两个任务同时执行完毕之后在执行第三个耗时操作,想要确保第一个和第二个耗时操作执行完之后就执行第三个操作,这看似是需要串行执行,但是在没有串行的时候,就需要其他的办法,比如在第三条线程添加一个阻塞函数,把第三个线程添加到阻塞函数里面,这样的话,后面的任务就只有等第三个任务执行完之后再继续执行第四五个操作
 
 
 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    // 5个任务. 前两个 同时执行, 后两个也同时执行.

    

    // 中间的任务必须等待前两个任务执行完毕之后,再执行.

    // 后两个任务必须等待第三个任务执行完毕之后再执行.

    

    

    

}

 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    // 创建一个并发队列

     dispatch_queue_t queue = dispatch_queue_create(nil, DISPATCH_QUEUE_CONCURRENT);

    //dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

 

    // 阻塞式函数,只有在自己创建的并发队列中才有效,对于全局并发队列,没有效果.

    

    dispatch_async(queue, ^{

        NSLog(@"renwu1:%@",[NSThread currentThread]);

        [NSThread sleepForTimeInterval:5];

    });

    

    dispatch_async(queue, ^{

        NSLog(@"renwu2:%@",[NSThread currentThread]);

    });

    

    // 阻塞式函数

    // 阻塞式函数,必须等待它之前的任务执行完毕之后,再执行阻塞式函数中的任务.

    // 只有等到阻塞式函数中的任务执行完毕之后,再执行后续任务.

    dispatch_barrier_async(queue, ^{

        NSLog(@"renwu3:%@",[NSThread currentThread]);

        [NSThread sleepForTimeInterval:3];

 

    });

    

    dispatch_async(queue, ^{

        NSLog(@"renwu4:%@",[NSThread currentThread]);

    });

    

    dispatch_async(queue, ^{

        NSLog(@"renwu5:%@",[NSThread currentThread]);

    });

    

}

@end

 

 

 

 

转载于:https://www.cnblogs.com/R-X-L/p/4779579.html

你可能感兴趣的文章
Intel VT-x处于禁用状态
查看>>
用什么软件可以修改PDF文件,软件的操作方法
查看>>
如何精简企业主数据“裹脚布”
查看>>
Pointer on C
查看>>
& 号和管道符号(|)在不同场景下的使用方法
查看>>
curl 浏览器模拟请求实战
查看>>
多个VLAN中的vrrp备份组配置举例
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(六)
查看>>
interlib在tomcat7.0的安装
查看>>
水晶报表在大型WEB内部管理系统里的滑铁卢
查看>>
我的友情链接
查看>>
Git学习
查看>>
trove 基于 centos7 制作 mysql5.6 镜像
查看>>
结合i节点和数据块分析linux中软链接和硬链接的区别
查看>>
Heartbeat crm的配置
查看>>
Stream
查看>>
我的友情链接
查看>>
Windows Server 2012_Install_Guide
查看>>
ISA Server搭建站点对站点×××
查看>>
我的友情链接
查看>>