`

GCD - Dispatch Barrier

 
阅读更多

 

先看代码

dispatch_queue_t queue = dispatch_queue_create("xx", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue, ^{
        NSLog(@"1");
    });
    dispatch_async(queue, ^{
        NSLog(@"2");
    });
    dispatch_async(queue, ^{
        NSLog(@"3");
    });
    dispatch_async(queue, ^{
        NSLog(@"4");
    });
    dispatch_barrier_async(queue, ^{
        NSLog(@"我一定第5执行");
    });
    dispatch_async(queue, ^{
        NSLog(@"6");
    });
    dispatch_async(queue, ^{
        NSLog(@"7");
    });

 dispatch_barrier_async是一个屏障,能保证自己一定在那个位置执行,但是有一个问题,在global queue中测试失败。使用不等待执行处理的队列加dispatch_barrier_async可实现高效的数据库访问和文件访问。

执行结果

2014-01-01 00:31:31.626 GCDDemo[2319:3703] 4
2014-01-01 00:31:31.626 GCDDemo[2319:330b] 2
2014-01-01 00:31:31.626 GCDDemo[2319:1303] 1
2014-01-01 00:31:31.626 GCDDemo[2319:3603] 3
2014-01-01 00:31:31.630 GCDDemo[2319:3603] 我一定第5执行
2014-01-01 00:31:31.630 GCDDemo[2319:1303] 7
2014-01-01 00:31:31.630 GCDDemo[2319:3603] 6

 

分享到:
评论

相关推荐

    dispatch_barrier_(a)sync

    1、通过dispatch_barrier_(a)sync添加的block会等待前边所有的block执行完(不包括回调)才执行。 2、在其后添加的block会在dispatch_barrier_(a)sync添加的block执行完之后(不包括回调)再执行; 不同点: 1、...

    GCD的简单使用simple-use-of-gcd-master.zip

    4. **Barrier**:在并行队列中,`dispatch_barrier_async`和`dispatch_barrier_sync`可以创建屏障,确保在屏障前的所有任务都执行完,然后执行屏障任务,最后执行屏障后的所有任务。这在更新共享数据时特别有用,...

    iOS GCD-Program-master

    在iOS开发中,Grand Central Dispatch(GCD)是Apple推出的一种多核处理器并行运算技术,用于优化应用程序的性能。GCD是基于C语言的,但可以无缝集成到Objective-C和Swift中。这个名为"IOS GCD-Program-master"的...

    GCD常用和不常用API说明GCD-Demo-master.zip

    在iOS和macOS开发中,Grand Central Dispatch(GCD)是一种强大的多线程技术,用于管理应用程序的并发性。GCD是Apple的C语言库,它抽象了底层的线程和处理器细节,使得开发者可以更方便地利用多核处理器的优势。本...

    gcd多线程gcd-demo-master (1).zip

    在IT行业中,多线程是程序设计中的一个重要概念,特别是在iOS和macOS开发中,Grand Central Dispatch(GCD)提供了一种高效、简洁的方式来管理并发和多线程。GCD是Apple开发的一种并行编程技术,它充分利用了多核...

    ios-dispatch的简单demo.zip

    这个名为"ios-dispatch的简单demo.zip"的压缩包文件包含了关于GCD中几个关键概念的示例代码,即`dispatch_apply`、`dispatch_group`、`dispatch_barrier`和`dispatch_source`。接下来,我们将深入探讨这些概念及其在...

    ios-dispatch的简单demo_.zip

    在iOS开发中, Dispatch(也称为GCD,Grand Central Dispatch)是Apple提供的多线程和并发处理技术。这个“ios-dispatch的简单demo_.zip”压缩包文件包含了一个关于Dispatch学习的实例,主要涵盖了`apply`、`source`...

    iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)1

    本篇文章主要讨论了如何深入理解GCD中的dispatch_group、dispatch_barrier以及基于线程安全的多读单写策略。下面我们将详细探讨这些概念。 首先,`dispatch_group` 是GCD提供的一种机制,用于跟踪一组异步任务的...

    线程同步dispatch_barrier_(a)sync1

    这里我们讨论的是GCD(Grand Central Dispatch)中的两种特定类型的线程同步方式:`dispatch_barrier_async` 和 `dispatch_barrier_sync`。它们都是用于在并发队列(concurrent queue)中创建屏障(barrier)任务,...

    iOS开发多线程-GCD介绍 - iOS知识库1

    3. 屏障执行任务:dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block); 参数说明:queue是队列,block是任务。在前面的任务执行结束后,它才执行,而它后面的任务等它执行完成后才会执行。 ...

    GCD使用的相关方法

    - `dispatch_barrier_async`:在并行队列中创建屏障,确保屏障前后的所有任务按顺序执行。 - `dispatch_group_notify`:当dispatch_group中的所有任务都完成后,执行通知任务。 4. **GCD最佳实践** - 避免在...

    swift-GCD使用大全

    在Swift编程中,Grand Central Dispatch(GCD)是苹果公司提供的多线程解决方案,它能够帮助开发者有效地管理并发任务,优化应用性能。本资源“swift-GCD使用大全”旨在全面介绍GCD的常用和不常用API,通过示例代码...

    ios gcd

    - 在并行队列中,使用`dispatch_barrier_async()`可以创建一个屏障任务,确保在它之前的所有任务执行完毕后再执行后续任务。 3. **主队列**: - 主队列是特殊的串行队列,所有在主队列上的任务都会在主线程上执行...

    GCD最全教程异步串行并发多任务依次执行中断附带备注

    - 使用`dispatch_barrier_async`可以在并行队列中创建一个屏障,确保屏障前的任务全部执行完毕后,再执行屏障后的任务。 ### **5. 中断任务** GCD本身不提供直接中断任务的功能,但可以通过设置标志或取消队列来...

    iOS GCD 开发教程 完整版

    GCD(Grand Central Dispatch)是Apple在OS X和iOS系统中引入的一种多线程处理技术,旨在简化并发编程,提高应用程序的性能和响应速度。GCD利用了操作系统底层的调度机制,允许开发者以一种声明式的方式处理并发任务...

    iOS GCD开发总结整理

    iOS GCD(Grand Central Dispatch)是Apple在2010年引入的一种多线程解决方案,它为开发者提供了一种高效、简洁的方式来管理并发任务。GCD是基于Cocoa框架的,适用于iOS和Mac OS X平台。本文将深入探讨GCD的基本概念...

    IOS GCD 多线程

    在并发队列中,可以使用`dispatch_barrier_sync()`和`dispatch_barrier_async()`创建栅栏块,保证在这段代码执行期间,其他任务不会并行执行。 **三、GCD最佳实践** 1. **避免主线程阻塞**:尽量将耗时操作放在...

    GCD总结代码

    GCD(Grand Central Dispatch)是Apple在其Mac OS X和iOS操作系统中引入的一种多线程解决方案。它是基于C语言的API,但与Objective-C和Swift完美兼容。GCD利用了系统调度资源,使得开发者可以更简单地处理并发和并行...

    gcdtest1示例源码

    在源码中,开发者可能还使用了其他GCD特性,如barrier tasks(屏障任务)来同步多个任务,或者group(小组)来跟踪一组任务的完成状态。同时,他们可能使用了`dispatch_async`和`dispatch_sync`函数来异步或同步地将...

    gcd简介及应用实例及实例分析.txt

    GCD(Grand Central Dispatch),也称为块并发编程(BlockConcurrency Programming),是苹果公司在2009年WWDC上发布的一个多核编程模型。它通过简化多线程编程的方式,使得开发者能够更加容易地利用现代多核处理器的...

Global site tag (gtag.js) - Google Analytics