GCD之线程挂起与恢复
我们可以使用dispatch_suspend函数暂停一个queue以阻止它执行block对象;使用dispatch_resume函数继续dispatch queue。调用dispatch_suspend会增加queue的引用计数,调用dispatch_resume则减少queue的引用计数。当引用计数大于0时,queue就保持挂起状态。因此你必须对应地调用suspend和resume函数。挂起和继续是异步的,而且只在执行block之间(比如在执行一个新的block之前或之后)生效。挂起一个queue不会导致正在执行的block停止。
下面看代码:
dispatch_queue_t queue=dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);dispatch_suspend(queue);dispatch_async(queue, ^{dispatch_apply(5, queue, ^(size_t index) {NSLog(@"%ld 1",index);});});sleep(1);NSLog(@"aa");dispatch_resume(queue);
运行结果:
如果把线程挂起恢复取消之后:
dispatch_queue_t queue=dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);
// dispatch_suspend(queue);dispatch_async(queue, ^{dispatch_apply(5, queue, ^(size_t index) {NSLog(@"%ld 1",index);});});NSLog(@"aa");
// dispatch_resume(queue);
运行结果如下 :
可以看到:线程挂起时,添加到线程队列中的block并没执行,而且还将主线程休眠了1秒,取消线程挂起后才执行,而在第二个代码段中,没有使用线程挂起,可以看到并不会都是aa先输出。
转载于:https://www.cnblogs.com/5ishare/p/4380337.html
GCD之线程挂起与恢复相关推荐
- Java并发编程(3):线程挂起、恢复与终止的正确方法(含代码)
挂起和恢复线程 Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的.如果在不合适的时候挂起线程(比如,锁定共享资源时),此时 ...
- RT-Thread物联网操作系统介绍:6、线程挂起和恢复
//恢复线程函数 rt_thread_resume(LED_Thread); //挂起任务函数 uwRet = rt_thread_suspend(LED_Thread); 工程代码百度网盘链接网址在 ...
- (58)模拟线程切换——添加挂起、恢复线程功能
一.回顾 我们在上一篇博客分析了模拟线程切换的源码. <模拟线程切换> 我们着重分析了 Scheduling 和 SwitchContext 这两个函数,对线程切换的过程有了新的认识: 线 ...
- 树莓派cpu检测_【树莓派3B+测评】线程的挂起与恢复CPU温度检测
[树莓派3B+测评]线程的挂起与恢复&CPU温度检测 [复制链接] 本帖最后由 donatello1996 于 2018-12-22 17:33 编辑 在TCP通信中,除了线程的创建和删除以外 ...
- Java线程的挂起与恢复 wait(), notify()方法介绍
一, 什么是线程的挂起与恢复 从字面理解也很简单. 所谓线程挂起就是指暂停线程的执行(阻塞状态). 而恢复时就是让暂停的线程得以继续执行.(返回就绪状态) 二, 为何需要挂起和恢复线程. 我们来看1个 ...
- java怎么看具体被挂起的线程_Java线程的挂起、恢复和终止
有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...
- linux中线程的挂起与恢复(进程暂停)
今 天 在网上查了一下 linux中对进程的挂起与恢复的实现,相关资料少的可怜,大部分都是粘贴复制.也没有完整详细的代码.故自己整理了一下 程序流程为:主线程创建子线程(当前子线程状态为stop停止状 ...
- RTX5 | 线程管理05 - 线程挂起osThreadSuspend与线程恢复osThreadResume
文章目录 一.前言 二.API 三.实验目的 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 一.前言 osThreadSuspend可以让线程A挂起,线程 ...
- 七. 多线程编程11.线程的挂起、恢复和终止
有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...
最新文章
- Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
- VS C++生成dll和静态调用dll的方法
- 使用mac以来的一些认识
- 33. 搜索旋转排序数组(013)二分查找+思路详解+来干了这杯代码!!!!!!
- 渗透测试之Nmap命令(三) idle 扫描
- java获取语言_如何在java中获取语言环境对象?
- 【Spark】Spark kafka because consumer rebalance same group id joined different streaming
- 如何高效的学习前端的网页设计?
- python函数里面可以修改一些数据类型
- java内部类简单解析
- lightoj 1029 最小生成树 + 最大生成树
- 局域网ip扫描工具_Network Kit X for Mac(网络检测工具箱)
- ad09只在一定范围内查找相似对象_AD常用快捷键
- 移动流量卡是月底清零吗,什么时候购买次月套餐?
- 第七章第八章思维导图
- Word中设置不同页面的页眉不一样的方法(页脚、页码同理)
- Java Online IDE
- 计算机设备标签怎么贴,电脑怎么打印不干胶标签 电脑打印不干胶标签操作流程【图文】...
- ElasticSearch自定义分析器(custom analyzer)
- p2p 企业信贷 UML 跨行清算
热门文章
- 阿里实习 电面,面试
- 误区30日谈21-24
- 安卓手机充电慢_苹果手机充电慢,耗电却很快?教你几个窍门,充得快电量更耐用...
- python自定义模块与模块调用
- php生成随机不重复的数字_PHP生成不重复随机数的几种方法
- mysql注入原理_Mysql报错注入原理分析
- python中文分词工具_结巴中文分词工具的安装使用 Python分词教程
- opencv 轮廓放大_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...
- 求计算机技术在创新上的应用,计算机技术在教学上的应用
- java随机打印一个数组元素_java 怎么随机打印自定义数组里面的字符串