iOS 线程之GCD的高级使用方法
之前的一篇关于线程的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的高级使用方法相关推荐
- iOS多线程之GCD小记
iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...
- (五十五)iOS多线程之GCD
GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...
- IOS中的多线程之GCD
在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下CDD的使用. GCD(Grand Central D ...
- 关于多线程之GCD的一些学习要点
GCD是当前多线程使用最方便的,也是使用比较多的. 学习GCD主要集中在一下几点: 一.队列,同步,异步 1.主队列:dispatch_get_main_queue(); 2.串行队列:dispatc ...
- linux 线程pthread_detach,linux线程之pthread_join和pthread_detach
在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...
- 多线程之NSThread
关于多线程会有一系列如下: 多线程之概念解析 多线程之pthread, NSThread, NSOperation, GCD 多线程之NSThread 多线程之NSOperation 多线程之GCD ...
- iOS读书笔记之Objective-C高级编程(GCD)
本文主要对GCD的概念.API以及实现进行梳理. 一.CCD的概念. 1.GCD,全称是Grand Central Dispatch,它是C语言的API. GCD的核心 : 将block(任务)添加到 ...
- Python3——多线程之threading模块
Python3--多线程之threading模块 目录 Python3--多线程之threading模块 Threading模块的对象 Threading模块的Thread类 queue模块(线程间通 ...
- iOS 多线程和GCD(Grand Central Dispath) 教程 (一)
iOS 多线程和GCD(Grand Central Dispath) 教程 (一) 本文翻译自 Ray Wenderlich 的博客 点击打开原文链接.全部由本人亲手翻译...童叟无欺~ 你有木有遇 ...
最新文章
- Megengine量化
- Java字符串用“。”(点)分隔。
- jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
- 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
- windows mysql 开启日志功能_Windows下开启mysql日志功能
- 【开源】接口管理平台eoLinker AMS 开源版3.1.5同步线上版!免费增加大量功能!...
- 怎么让用一行代码实现页面的定时强制刷新?脚本刷流量再也不用愁了!
- 电子科大电气工程导师介绍绍_预告|卓越讲堂第二期——电气工程及其自动化专业介绍...
- 旋转排序数组系列题详解
- 第二阶段站立会议08
- 登录oracle sql,登录 Oracle SQL Developer
- 《指针的编程艺术(第二版)》一3.8 改错题
- java 图形界面---字体的设置
- 解释Spring中IOC, DI, AOP
- 【JavaWeb】IDEA中启动SpringBoot项目及解决相关报错问题
- Python-png转换成jpg
- Putnam竞赛一道题及中科大自主招生试题的联系
- Ubuntu 升级显卡驱动
- 新硬盘装机出现Disk Read Error解决方案
- html语言制作带样式的表格,CSS实现的清爽、漂亮的表格样式分享