dispatch_apply&dispatch_suspend&dispatch_resume使用

第一、dispatch_apply 是同步函数,会阻塞当前线程直到所有循环迭代执行完成。当提交到并发queue时,循环迭代的执行顺序是不确定的

示例:

dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_apply(10, queue, ^(size_t index) {

NSLog(@"%zu",index);

});

执行结果:

8 1 2 4 5 3 9 0 7 6

因为dispatch_apply会等待处理执行结束,因此推荐在dispatch_asyn函数中执行dispatch_apply

第二、dispatch_suspend挂起指定的dispatch_queue

第三、dispatch_resume恢复指定的dispatch_queue

时间: 2024-12-29 17:55:38

dispatch_apply&dispatch_suspend&dispatch_resume使用的相关文章

iOS学习之GCD

多线程编程 线程定义:一个CPU执行的CPU命令 列一条无分叉的路径就叫线程. 多线程:执行多个不同的CPU命令 有多条路径. 线程的使用:主线程(又叫作UI线程)主要任务是处理UI事件,显示和刷新UI,(只有主线程有直接修改UI的能力)耗时的操作放在子线程(又叫作后台线程.异步线程). 多线程容易引发的编程问题: 数据竞争:多个线程更新相同的资源会导致数据不一致. 死锁:停止等待事件的线程会导致多个线程相互持续等待. 太多线程会消耗大量内存. Thread Safe(线程安全):一段线程安全的

包建强的培训课程(12):iOS深入学习

Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈<「『[[[〝﹙﹛﹝$(.[{£¥ !%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶.."〉>」』]]]〞︶︺︾﹀﹄﹚﹜﹞!"%'),.::?]`|}-¢ /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0;

dispatch queues GCD

我们几乎可以调度队列去完成所有用线程来完成的任务.调度队列相对于线程代码更简单,易于使用,更高效. 下面讲主要简述调度队列,在应用中如何使用调度队列去执行任务. 1.关于调度队列 所有的调度队列都是先进先出队列,因此,队列中的任务的开始的顺序和添加到队列中的顺序相同.GCD自动的为我们提供了一些调度队列,我们也可以创建新的用于具体的目的. 下面列出几种可用的调度队列类型以及如何使用. (1)serial queues(串行队列)又称私有调度队列(private),一般用在对特定资源的同步访问上.

iOS GCD使用指南

Grand Central Dispatch(GCD)是异步运行任务的技术之中的一个. 一般将应用程序中记述的线程管理用的代码在系统级中实现.开发人员仅仅须要定义想运行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划运行任务.因为线程管理是作为系统的一部分来实现的,因此可统一管理.也可运行任务,这样就比曾经的线程更有效率. Dispatch Queue Dispatch Queue是用来运行任务的队列,是GCD中最主要的元素之中的一个. Dispatch Que

【读书笔记】GCD-API

一,Dispatch Queue dispatch_async(queue, ^{ /* *想执行的任务 */ }); 其中queue分为两种: 1,Serial Dispatch Queue 等待现在执行中处理结束. 2,Concurrent Dispatch Queue 不等待现在执行中处理结束. 二,dispatch_queue_create 用于生成queue. 1,生成Serial Dispatch Queue. dispatch_queue_t mySerialDispatchQue

分分钟学会GCD

2014 什么是GCD Grand Central Dispatch (GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率. 也就是说,GCD用我们难以置信的非常简洁的记述方法,实现了极为复杂的多线程编程. dispatch_async(queue, ^{ // 长时间处理 // 例如数据库访问 // 例如图像识别 // 长时间处理结束,主线程使用该处理结果 di

iOS多线程开发——GCD的使用与多线程开发浅析(二)

对于iOS多线程开发,我们时刻处于学习之中,在看书中,看文档中,项目开发中,都可以去提高自己.最近刚看完了<Objective-C高级编程 iOS与OS X多线程和内存管理>这本书后,对多线程有了更为深入的理解,故在此做一个总结与记录.这本书我已经上传至网盘  https://pan.baidu.com/s/1c2fX3EC ,这本书是iOS开发者必读的书之一,写得很不错,欢迎大家下载阅读.书的封面如下,故也称狮子书: . (1)多线程会遇到的问题 . 多线程会出现什么问题呢?当多个线程对同一

GCD 多线程API编程笔记

GCD 是 iOS 编程中实现多线程的常用 API,使用方便,无须进行线程的管理,由系统代劳.同时GCD基于C实现,性能强. 在名著<Pro multithreading and memory management for iOS and OS X>(中文名:<Objective-C 高级编程 iOS与 OSX多线程和内存管理>)中,专门有章节讲解,特根据此书讲解做些笔记. 一 概要 GCD是Grand Central Dispatch(GCD)的缩写,是异步执行任务的技术之一.一

iOS多线程编程之GCD的使用

什么是线程呢? 1个CPU执行的CPU命令列为一条无分叉的路径即为线程. 这种无分叉路径不止1条,存在多条时即为多线程. 什么是GCD? Grand Central Dispatch (GCD)是异步执行任务的技术之一.一般将应用程序中计述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到Dispatch Queue中,GCD就能生成必要的线程并计划执行任务. dispatch_async(queue, ^{ /* *长时间处理 *例如访问数据库 */ /* *长时间处理结束