美文网首页2015技术笔记
2015笔记——GCD(三)

2015笔记——GCD(三)

作者: 满庭花醉三千客 | 来源:发表于2018-07-27 09:37 被阅读7次

假设某个Dispatch Queue中有若干个block,当queue在执行时,我不想让block执行了,先暂停一会,该怎么办呢?

哈,dispatch queue可以被挂起和恢复。使用 dispatch_suspend 函数来挂起,使用 dispatch_resume 函数来恢复。

一个需要注意的地方时:dispatch queue 的挂起是block粒度的。换句话说,挂起一个queue并不会将当前执行的block挂起。它会允许当前执行的block执行完毕,然后后续的block不再会被执行,直至queue被恢复。如果你挂起了一个queue,那么销毁它之前,必须先对其进行恢复。

那么接下来,展示一下我的实验及其结果:

首先:

屏幕快照 2015-11-26 14.16.59.png

定义一个全局变量queue(请注意使用strong),以及一个全局BOOL值。

然后写个按钮,用来控制挂起queue,并向myQueue中添加两个执行的block:

屏幕快照 2015-11-26 16.05.49.png

最后是按钮的点击事件,也就是挂起和恢复queue的方法:

屏幕快照 2015-11-26 14.28.08.png

最最关键的还是效果啦:

屏幕快照 2015-11-26 14.27.30.png

可以看出:当我点击了按钮,将queue挂起时,第一个block仍然在执行,执行完毕后,第二个block没有再执行了。当我隔了十多秒后再点击按钮,则第二个block又继续执行了。
加油~

相关文章

  • 2015笔记——GCD(三)

    假设某个Dispatch Queue中有若干个block,当queue在执行时,我不想让block执行了,先暂停一...

  • 2015笔记——GCD(二)

    除了之前提到的使用GCD可以后台处理任务,不阻塞主线程,还有一个用处是:可以让程序在后台较长久的运行。 在没有使用...

  • 2015笔记——GCD(一)

    Grand Central Dispatch 是苹果开发的一个多核编程的解决方法。 dispatch queue ...

  • 一 GCD初识

    1.GCD基础概念(此笔记为学习Objective-C高级编程书中第三章所记录的相关知识点) gcd为异步执行任务...

  • GCD死锁

    http://www.superqq.com/blog/2015/10/16/five-case-know-gcd/

  • iOS多线程-GCD 附带GCD相关代码

    多线程学习笔记-GCD 我把这篇文章所用到的代码总结到这里->GCD项目总结下载地址-GCD-wxk可以下载参考 ...

  • iOS中的定时任务

    定时任务的三种实现方法 方法1:performSelector 方法2:GCD 方法3:NSTimer 以上转自MJ笔记

  • Swift 4 Cheat Sheet Advanced

    Swift 4 Cheat Sheet Advanced @(编程笔记)[Swift] Singleton GCD...

  • Mac 学习笔记(三)Terminal

    airport title: Mac 学习笔记(三)Terminaldate: 2015-10-28 14:15:...

  • iOS开发多线程篇--GCD

    目录: 一 GCD简介 二 GCD中的队列 三 注意点 一 GCD简介 1 什么是GCD? 全称是Grand Ce...

网友评论

    本文标题:2015笔记——GCD(三)

    本文链接:https://www.haomeiwen.com/subject/lkrwmftx.html