dispatch_queue_create

//虽然Serial Dispatch Queue和Concurrent Dispatch Queue受到系统资源的限制,但用dispatch_queue_create函数可生成任意多个Dispatch Queue。
//在一个Serial Dispatch Queue中同时只能执行一个追加处理,多个Serial Dispatch Queue可并行执行
//过多使用Serial Dispatch Queue,会消耗大量内存,引起大量上下文切换,大幅度降低系统的响应性能,因此注意Serial Dispatch Queue的生成个数。
//Concurrent Dispatch Queue不管生成多少,由于XNU内核只使用有效管理的线程,因此不会发生Serial Dispatch Queue的问题。
//多个线程更新相同资源导致的数据竞问题,使用Serial Dispatch Queue。
//当并行执行不发生数据竞争等问题的处理时,使用Concurrent Dispatch Queue。
//通过dispatch_queue_create可生成Dispatch Queue,注意,生成的Dispatch Queue在使用结束后必须由程序员进行释放(现在GCD对象已经纳入了ARC的管理范围,在纳入之前是需要程序员按照内存管理的思考方式来手动管理GCD对象的)。
dispatch_queue_t serialDispatchQueue = dispatch_queue_create("Dispatch Queue的名称", NULL);
//参数1:Dispatch Queue的名称,可设NULL
//参数2:指定Dispatch Queue的类型。若为NULL,则为Serial Dispatch Queue;若为DISPATCH_QUEUE_CONCURRENT,则为Concurrent Dispatch Queue
//返回值:表示Dispatch Queue的diapatch_queue_t类型
//通过dispatch_release函数释放
//dispatch_release(serialDispatchQueue);
//通过dispatch_retain函数持有
//dispatch_retain(serialDispatchQueue);
//通过dispatch_async函数将block中定义的处理“追加”到赋值在serialDispatchQueue的“Dispatch Queue”中
dispatch_async(serialDispatchQueue, ^{
NSLog(@"//被追加的定义处理的block");
});
//注意,在dispatch_async函数中追加Block到Dispatch Queue,该Block通过dispatch_retain函数持有Dispatch Queue。无论Dispatch Queue是Serial Dispatch Queue还是Concurrent Dispatch Queue都一样。一旦Block执行结束,就通过dispatch_release函数释放该Block持有的Dispatch Queue。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值