- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//同步函数无需栅栏函数
//栅栏函数不能使用全局并发队列:不起作用
//栅栏函数不能使用全局并发队列:不起作用
//栅栏函数不能使用全局并发队列:不起作用
//栅栏函数不能使用全局并发队列:不起作用
//栅栏函数不能使用全局并发队列:不起作用
//栅栏函数不能使用全局并发队列:不起作用 dispatch_queue_t queue111 = dispatch_queue_create("栅栏", DISPATCH_QUEUE_CONCURRENT); dispatch_queue_t queue = dispatch_get_global_queue(, ); dispatch_async(queue111, ^{
NSLog(@"111---%@", [NSThread currentThread]);
}); dispatch_async(queue111, ^{
NSLog(@"222---%@", [NSThread currentThread]);
}); //栅栏函数钱的111 和222谁先执行 无法控制,因为他们是异步执行的,栅栏函数后的333,444 也无法控制,他们也是异步执行的
dispatch_barrier_async(queue111, ^{
NSLog(@"++++++");
}); dispatch_async(queue111, ^{
NSLog(@"333---%@", [NSThread currentThread]);
}); dispatch_async(queue111, ^{
NSLog(@"444---%@", [NSThread currentThread]);
});
}

使用自己创建的 异步函数 打印结果:

使用全局并发队列 打印结果:

OC 线程操作 - GCD使用 - 栅栏函数的更多相关文章

  1. OC 线程操作 - GCD使用 -同步函数,异步函数,串行队列,并发队列

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // GCD 开几条线程并不是我们 ...

  2. OC 线程操作 - GCD队列组

    1.队列组两种使用方法2.队列组等待 wait /** 新方法 队列组一般用在在异步操作,在主线程写队列组毫无任何作用 */ - (void)GCD_Group_new_group___notify{ ...

  3. OC 线程操作 - GCD快速迭代

    - (void)forDemo{ //全都是在主线程操作的 ; i<; i++) { NSLog(@"--%@", [NSThread currentThread]); } ...

  4. OC 线程操作 - GCD使用 -线程通讯, 延迟函数和一次性代码

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // [self downImag ...

  5. OC线程操作-GCD介绍

    1. GCD介绍 1.11.2 1.3 异步具备开启能力但是不是 一定可以开启 1.4 1.5 67. 8.

  6. OC 线程操作2 - NSThread

        方法1 :直接创建 alloc init - (void)createNSThread111{ /* 参数1: (nonnull id) 目标对象 self 参数2:(nonnull SEL) ...

  7. OC 线程操作1 - pthread

    #import "ViewController.h" #import <pthread.h> //1.需要包含这个头文件 @interface ViewControll ...

  8. OC 线程操作3 - NSOperation

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  9. OC 线程操作3 - NSOperation 实现线程间通信

    #import "ViewController.h" @interface ViewController () /** 图片 */ @property (weak, nonatom ...

随机推荐

  1. echo off

    就是说关闭回显 @echo off并不是DOS程序中的,而是DOS批处理中的.当年的DOS,所有操作都用键盘命令来完成,当你每次都要输入相同的命令时,可以把这么多命令存为一个批处理,从此以后,只要运行 ...

  2. Vue基础知识之组件及组件之间的数据传递(五)

    vue中的组件是自定的标签,可以扩展的原生html元素,封装可复用的代码 note: 1.在标签命中不要使用大写,标签名字必须用短横线隔开 2.模板中只能有一个根元素,不能使用并列标签. 定义组件 全 ...

  3. 2.纯 CSS 创作一个矩形旋转 loader 特效

    原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR  扩展地址:https://codepen.io/pen/ HT ...

  4. OpenACC 《大规模并行处理器编程实战》教材讲解

    ▶ <大规模并行处理器编程实战>第15章,关于OpenACC 的部分,散点 ● OpenACC 中,主机存储器和设备存储器是分开处理的,程序员只要制定要传输的存储器对象即可,编译器会自动生 ...

  5. Mysql replace into

    mysqlsql serverinsert 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以 ...

  6. static 和 global

    global global关键字如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.例如 $conf = 1; function con ...

  7. 文件的基本操作(python)

    文件打开: 1. f = open('yesterday,‘r+’,encoding = ‘utf-8’) 读取的方式加载为Utf-8 r    打开文件并写, 只适用于文字类 r+   打开文件并读 ...

  8. head 标签

    1.<meta - > <meta charset="UTF-8"> #utf-8字符编码 <meta http-equiv="Refres ...

  9. Maven 项目中 添加自己的jar包

    mvn install:install-file   -Dfile=java-bloomfilter-1.0.jar  -DgroupId=com.sina  -DartifactId=java-bl ...

  10. Egret - timer

    相关:http://edn.egret.com/cn/index.php/article/index/id/154 1.Timer 的使用方法非常简单,我们只需要关心两个属性,三个方法和两个事件即可. ...