background image

 
•GCD 队列:
1.全局队列:所有添加到主队列中的任务都是并发执行的(可能会开启多条线程)
dispatch_queue_t 

queue 

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

2.串行队列:所有添加到串行队列中的任务都是顺序执行的(只可能会开启一条线

程)

dispatch_queue_t 

queue 

dispatch_queue_create("myQueue", 

DISPATCH_QUEUE_SERIAL);

3.主队列:所有添加到主队列中的任务都是在主线程中执行的

dispatch_get_main_queue();

•异步操作
–dispatch_async 在其他线程执行任务,会开启新的线程
–异步方法无法确定任务的执行顺序

•同步操作
–dispatch_sync 在当前在线程执行任务,不开启新的线程
–同步操作与队列无关
–同步方法会依次执行,能够决定任务的执行顺序
–更新界面 UI 时,最好使用同步方法
注:同步还是异步,取决于方法名

(不影响主队列,影响全局队列、串行队列)。

 
试例

1:

分析:虽然任务都是添加到全局队列中,但是都是同步操作,所以不会开启新的线程,

是在当前线程中执行任务。

试例

2: