Main Dispatch Queue / Global Dispatch Queue

系统提供的Dispatch Queue

  • Main Dispatch Queue(Serail Dispatch Queue)

主线程中执行的Dispatch Queue 因为主线程只有1个,所以Main Dispatch Queue自然就是Serail Dispatch Queue

追加到Main Dispatch Queue的处理在主线程的RunLoop中执行。

由于在主线程中执行,因此要将用户界面更新等一些必须在主线程中执行的处理追加到Main Dispatch Queue使用。

Main Dispatch Queue / Global Dispatch Queue_第1张图片
屏幕快照 2016-03-01 下午4.46.46.png
  • Gloabal Dispatch Queue(Concurrent Dispatch Queue)
    没有必要通过dispatch_queue_create函数逐个生成Concurrent Dispatch Queue。只要获取Global Dispatch Queue使用即可。
没有必要通过dispatch_queue_create函数逐个生成Concurrent Dispatch Queue.只要获取Global Dispatch Queue使用即可。
Main Dispatch Queue / Global Dispatch Queue_第2张图片
屏幕快照 2016-03-01 下午5.00.09.png

各种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_BACKGROUD, 0);

dispatch_asnyc(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
/*
*可并行执行的处理
*/

/*
*在 Main Dispatch Queue中执行Block
*/
dispatch_async(dispatch_get_main_queue(), ^{

});

});

你可能感兴趣的:(Main Dispatch Queue / Global Dispatch Queue)