•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: