创建Dispatch Queue

第一、dispatch_queue_create 用于创建用户线程队列。可以创建Serial Dispatch Queue 和Concurrent Dispatch Queue两种队列,Serial Dispatch Queue是等待现在正在执行的Queue,即串行执行

Concurrent Dispatch Queue不等待现在正在执行中的Queue,即并行队列

1、创建Serial Dispatch Queue

dispatch_queue_t serialQueue=dispatch_queue_create("hello1", NULL);

因为是串行执行,因此创建一个Serial Dispatch Queue就得创建一个线程,如果线程太多,占用太多内存,上下文切换会使系统资源浪费,一次应该严格控制创建Serial Dispatch Queue的数目。

在实际使用过程中,多个线程更新相同的数据资源导致数据竞争时使用此类型的queue

2、创建Concurrent Dispatch Queue

dispatch_queue_t concurrentQueue=dispatch_queue_create("hello2", DISPATCH_QUEUE_CONCURRENT);

如果想并行执行并且不产生数据竞争的问题时,使用Concurrent Dispatch Queue,在iOS和mac系统中,XNU控制线程的创建,会结束掉不在需要的线程,可以很好地管理执行多个并行执行的线程

3、通过dispatch_queue_create常见的queue,因为不支持ARC,所以必须通过dispatch_release释放,如果要保留则采用dispatch_retain,

创建Dispatch Queue

时间: 2024-10-29 07:57:49

创建Dispatch Queue的相关文章

GCD基本概念和Dispatch Queue

什么是GCD? Grand Central Dispatch或者GCD,是?一套低层API,提供了?一种新的?方法来进?行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将 任务切分为多个单?一任务然后提交?至?工作队列来并发地或者串?行地执?行.GCD?比之NSOpertionQueue更底层更?高效,并且它不是Cocoa框架的?一部分. 除了代码的平?行执?行能?力,GCD还提供?高度集成的事件控制系统.可以设置句柄来响应?文件描述符.mach po

GCD: 基本概念和Dispatch Queue 【转】

什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行.GCD比之 NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分. 除了代码的平行执行能力,GCD还提供高度集成的事件控制系统.可以设置句柄来响应文件描述符.mach ports(Mach port 用于

装个蒜。学习下dispatch queue

dispatch queue的真髓:能串行,能并行,能同步,能异步以及共享同一个线程池. 接口: GCD是基于C语言的APT.虽然最新的系统版本中GCD对象已经转成了Objective-C对象,但API仍保持纯C接口(加了block扩展).这对实现底层接口是好事,GCD提供了出色而简单的接口. Objective-C类名称为MADispatchQueue,包含四个调用方法: 1. 获取全局共享队列的方法.GCD有多个不同优先级的全局队列,出于简单考虑,我们在实现中保留一个. 2. 串行和并行队列

NSThread 、NSRunLoop 和 Dispatch Queue

iOS多线程编程中,NSOperation和NSOperationQueue无疑是最常用的,它们能满足绝大部分情况下的线程操作.但在完成一些特殊的任务时,我们还是要使用的NSThread和NSRunLoop. NSThread很好理解,它等同于Java中的Thread类. NSRunLoop却不太好理解.从字面上说,RunLoop可以翻译成“运行回路”或“运行循环”,我们可以把它看成是一种特殊的循环结构——我们知道for或者while循环语句,其实NSRunLoop就是一种类似的循环,只不过它比

IOS开发 GCD介绍: 基本概念和Dispatch Queue

iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØNSOperation/NSOperationQueue 面向对象的线程技术 ØGCD —— Grand Central Dispatch(派发) 是基于C语言的框架,可以充分利用多核,是苹果推荐使用的多线程技术 以上这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Appl

GCD之dispatch queue深入浅出

GCD之dispatch queue深入浅出 http://blog.csdn.net/samuelltk/article/details/9452203

MSMQ学习笔记二——创建Message Queue队列

一.创建Message Queue队列的主要流程 1.定义MQQUEUEPROPS 结构: 2.设置消息队列属性: 3.初始化MQQUEUEPROPS 结构: 4.调用MQCreateQueue创建队列. 下面对MSDN上的创建Message Queue队列示例函数: HRESULT CreateMSMQQueue( LPWSTR wszPathName, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPWSTR wszOutFormatName, DWO

Dispatch Queue 之 dispatch_async

? 可以看到,在queue里的任务,不仅仅是一个函数,也可以是一个其他的queue. 下面是一个例子. ? 全局队列的处理 一般一个全局队列有多个线程,这些个线程会遍历并处理链表里的任务. 对于全局队列,当一个任务被抛进来后,会尽快处理掉. 如果有空闲线程,那么这个空闲线程会处理这个任务. 如果没有空闲线程,那么会新开一个线程来处理. 空闲线程来自哪里呢? do { _dispatch_worker_thread2(context); // we use 65 seconds in case t

Dispatch Queue

无论编程人员如何努力编写管理线程的代码,在性能方面也不可能胜过XNU内核级所实现的GCD. 使用GCD要比使用pthreads和NSThread这些一般的多线程编程API更好.并且如果使用GCD就不必编写为操作线程反复出现的类似的源代码(这被称为固定源代码片断),而可以在线程中集中实现处理内容,真的是好处多多.我们尽量多使用GCD或者使用了Cocoa框架GCD的NSOperationQueue类等API.