首页 > 代码库 > 创建Dispatch Queue
创建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,
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,
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。