系统标准提供的Dispatch Queue

时间:2023-01-20 17:36:22
//Main Dispatch Queue,是在主线程中执行的Dispatch Queue。Main Dispatch Queue是Serial Dispatch Queue。追加到Main Dispatch Queue的处理在主线程的RunLoop中执行。由于Main Dispatch Queue在主线程中执行,因此要将用户界面的界面更新等一些必须在主线程中执行的处理追加到Main Dispatch Queue使用。
//Global Dispatch Queue,是所有的应用程序都能够使用的Concurrent Dispatch Queue。没有必要通过dispatch_queue_create函数逐个生成Concurrent Dispatch Queue。只要获取Global Dispatch Queue即可。Global Dispatch Queue有4个执行优先级,分别是高优先级(High Priority)、默认优先级(Default Priority)、低优先级(Low Priority)和后台优先级(Background Priority)。用于Global Dispatch Queue的线程的执行优先级,使用Global Dispatch Queue的执行优先级。线程的执行优先级不能保证实时性,只是大致的判断。
//Main Dispatch Queue的获取方法
dispatch_queue_t mainDispatchQueue = dispatch_get_main_queue();
//Global Dispatch Queue(高优先级)的获取方法
dispatch_queue_t globalDispatchQueueHigh = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
//Global Dispatch Queue(默认优先级)的获取方法
dispatch_queue_t globalDispatchQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//Global Dispatch Queue(低优先级)的获取方法
dispatch_queue_t globalDispatchQueueLow = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW , 0);
//Global Dispatch Queue(后台优先级)的获取方法
dispatch_queue_t globalDispatchQueueBackgroud = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND , 0);
//另外,对于Main Dispatch Queue和Global Dispatch Queue执行dispatch_release函数和dispatch和_retain函数不会引起任何变化,也不会有任何问题。但为了符合内存管理的思考方式,可以直接对Main Dispatch Queue和Global Dispatch Queue执行dispatch_release函数和dispatch和_retain函数。