之前的一篇关于线程的blog已经为大家介绍了GCD的简单使用方式及样例说明,今天因为项目中有特殊的应用GCD的实例,为大家介绍两种特殊需求的使用GCD的方法。

目的:实现一件事情做完,再做下一件事情。确保函数的运行周期。

解决方式:提供下面2种解决方式

1、创建barrier等待线程
  
dispatch_async(dispatch_get_main_queue(), ^{
    
[self ActionFirst];
   
});
            
dispatch_barrier_async(dispatch_get_main_queue(), ^{
   
[self ActionNext];
   
});
 
2、创建group线程组(即 队列queue)

dispatch_group_t group = dispatch_group_create();
            
         dispatch_group_async(group, dispatch_get_main_queue(), ^{

[self ActionFirst];

});
            
         dispatch_group_notify(group, dispatch_get_main_queue(), ^{

[self ActionNext];

});

出现故障的代码例如以下:

-(void)example

{
[self ActionFirst];
 
[self ActionNext];
}

产生原因:调用example函数时。因为ActionFirst函数运行的时间比較长。当ActionNext函数运行完时,ActionFirst可能还没有运行完,导致运行ActionNext时出现崩溃的现象。

转载于:https://www.cnblogs.com/zfyouxi/p/5389928.html

iOS 线程之GCD的高级使用方法相关推荐

  1. iOS多线程之GCD小记

    iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...

  2. (五十五)iOS多线程之GCD

    GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...

  3. IOS中的多线程之GCD

    在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下CDD的使用. GCD(Grand Central D ...

  4. 关于多线程之GCD的一些学习要点

    GCD是当前多线程使用最方便的,也是使用比较多的. 学习GCD主要集中在一下几点: 一.队列,同步,异步 1.主队列:dispatch_get_main_queue(); 2.串行队列:dispatc ...

  5. linux 线程pthread_detach,linux线程之pthread_join和pthread_detach

    在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...

  6. 多线程之NSThread

    关于多线程会有一系列如下: 多线程之概念解析 多线程之pthread, NSThread, NSOperation, GCD 多线程之NSThread 多线程之NSOperation 多线程之GCD ...

  7. iOS读书笔记之Objective-C高级编程(GCD)

    本文主要对GCD的概念.API以及实现进行梳理. 一.CCD的概念. 1.GCD,全称是Grand Central Dispatch,它是C语言的API. GCD的核心 : 将block(任务)添加到 ...

  8. Python3——多线程之threading模块

    Python3--多线程之threading模块 目录 Python3--多线程之threading模块 Threading模块的对象 Threading模块的Thread类 queue模块(线程间通 ...

  9. iOS 多线程和GCD(Grand Central Dispath) 教程 (一)

    iOS 多线程和GCD(Grand Central Dispath) 教程 (一)  本文翻译自 Ray Wenderlich 的博客 点击打开原文链接.全部由本人亲手翻译...童叟无欺~ 你有木有遇 ...

最新文章

  1. Megengine量化
  2. Java字符串用“。”(点)分隔。
  3. jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
  4. 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
  5. windows mysql 开启日志功能_Windows下开启mysql日志功能
  6. 【开源】接口管理平台eoLinker AMS 开源版3.1.5同步线上版!免费增加大量功能!...
  7. 怎么让用一行代码实现页面的定时强制刷新?脚本刷流量再也不用愁了!
  8. 电子科大电气工程导师介绍绍_预告|卓越讲堂第二期——电气工程及其自动化专业介绍...
  9. 旋转排序数组系列题详解
  10. 第二阶段站立会议08
  11. 登录oracle sql,登录 Oracle SQL Developer
  12. 《指针的编程艺术(第二版)》一3.8 改错题
  13. java 图形界面---字体的设置
  14. 解释Spring中IOC, DI, AOP
  15. 【JavaWeb】IDEA中启动SpringBoot项目及解决相关报错问题
  16. Python-png转换成jpg
  17. Putnam竞赛一道题及中科大自主招生试题的联系
  18. Ubuntu 升级显卡驱动
  19. 新硬盘装机出现Disk Read Error解决方案
  20. html语言制作带样式的表格,CSS实现的清爽、漂亮的表格样式分享

热门文章

  1. as一种模拟输入效果
  2. 电视信号——行场同步
  3. 【转载】pycharm远程调试配置
  4. eclipse运行程序时只有run on server
  5. 算法的sound和complete
  6. Python培训入门基础知识学什么?
  7. js 字符串转换成数字的 三种方法
  8. CHIL-SQL-MIN() 函数
  9. namenode如何存储复本?
  10. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】