GCD实践——串行队列/并发队列与iOS多线程详解

本文介绍了GCD在iOS多线程开发中的应用,包括同步和异步执行的概念,以及串行队列和并行队列的区别。同步执行在当前线程进行,可能导致界面卡顿;而异步执行则在其他线程,不会阻塞主线程。串行队列按顺序执行任务,而并行队列可并发执行任务,顺序未定义。文中通过代码示例展示了串行队列和并行队列的使用,并讨论了如何在GCD中更新UI。
摘要由CSDN通过智能技术生成

       GCD(Grand Central Dispatch),是苹果提供的一个解决多线程开发的解决方案。GCD会自动管理线程的生命周期(创建线程,调度任务,销毁线程),完全不需要我们管理,我们只需要告诉干什么就行。同时GCD使用block来进行任务的执行,用起来非常方便、灵活。本篇博客我们主要将GCD,其他的多线程实现方式还有NSThread、NSOperationQueue,我们将会在以后的博客中讲解。

       这里我们要提到一个概念:【任务】。就是操作,就是你要执行的一段代码,在GCD中就是一个Block,所以添加任务十分方便。

【同步执行】:只要是同步执行的任务,都会在当前线程执行,不会另开线程。所以说网络请求等耗时操作一般不使用同步,而是异步,否则会阻塞主线程,界面会卡住。

【异步执行】:只要是异步任务执行的任务,都会另开线程,在别的线程执行。

同步(sync)和异步(async)的主要区别在于会不会阻塞当前线程,直到Block中的任务执行完毕。     

如果是同步(sync)操作,它会阻塞当前线程并等待Block中的任务执行完毕,然后当前线程才会继续往下运行(因为同步操作没有开新线程,是在主线程中执行的,所以会阻塞)。

如果是异步(async)操作,当前线程会直接往下执行,他不会阻塞当前线程(因为异步操作是在另一个线程中执行的,所以不会阻塞主线程)。



队列:用于存放任务,一共有两种队列:串行队列和并行队列。

1.串行队列(private dispatch queue)一次只执行一个线程,按照添加到队列的顺序依次执行;

2.并行队列(global dispatch queue)一次可以执行多个线程,线程的执行没有先后顺序。根据同步或者异步有不同的执行方式。放到并行队列的任务,GCD也会FIFO的取出来,但不同的是,他取出来一个就会放到别的线程,然后再取出来一个又放到另一个线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值