GCD与自定义队列

Leg*_*las 1 multithreading cocoa-touch objective-c grand-central-dispatch ios

我想知道这两者之间的性能差异.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

    // perform complex operation

    // dispatch back to main thread to update UI

});



dispatch_async(_myCustomConcurrentQueue, ^{

    // perform complex operation

    // dispatch back to main thread to update UI

});
Run Code Online (Sandbox Code Playgroud)

我的假设是在整个操作系统和其他应用程序中使用GCD,它需要执行非常快速的后台任务,并且快速完成.创建的自定义队列与GCD是分开的,它们可以运行不同的任务,并在释放后添加回池中.所以我的假设是我的customQueue比复杂操作的GCD表现更好.

你的想法是什么?哪个表现更好?它们是一样的吗?

Rob*_*Rob 9

而高优先级的全局队列理论上可能更快(因为你没有创建队列,略有不同的线程的优先级),这和自己的自定义并发队列之间的差别是不太可能观察到.但是,有两个原因可能是您想要使用自己的自定义队列:

  1. 某些功能(尤其是调度障碍)在全局队列中不可用,因此如果您需要这些功能,则需要使用自定义队列.

  2. 调试您的应用程序,使用具有有意义名称的自己的队列也很有用,这样您就可以更轻松地识别调试器中的各个线程.

但是,选择高优先级全局并发队列与自定义并发队列没有实质性能原因.