- Swift 2 iOS 开发
- iOS 开发 - 首页
- iOS 开发 - Xcode IDE
- iOS 开发 - 第一个应用程序
- 使应用程序具有交互性
- iOS 开发 - Swift Playground
- 使用 Swift 创建应用程序
- iOS 开发 - 高级 iOS
- iOS 开发 - 集成地图
- iOS 开发 - 自动布局
- iOS 开发 - 动画
- 访问 Web 服务
- 并发控制
- 面试问题
- iOS 开发有用资源
- iOS 开发 - 快速指南
- iOS 开发 - 资源
- iOS 开发 - 讨论
并发控制
并发是一种同时执行多个操作的方式。在应用程序中,并发指的是多个任务同时/并发运行。
并发可以使您的应用程序更快、更简洁,并为用户提供更好的体验。许多开发人员认为使用多线程很困难,但是像NSOperation和Dispatch Queues这样的 API 使在应用程序中使用并发和多线程变得容易。
Grand Central Dispatch
GCD 是最常用的 API,用于管理并发代码并在系统级别异步执行操作。GCD 提供并使用任务队列。这些队列是使用 FIFO 术语的数据结构,即队列中第一个任务将首先执行,队列中最后一个任务将最后执行。
例如 - 假设一个电影票预订队伍,如果你是最后一个人,你将最后拿到票,如果有人在你之后来,他将在你之后拿到票。
调度队列
调度队列是在应用程序中异步并发执行任务的简便方法。队列有两种类型:
串行队列 - 它们以串行方式存储任务,并一次执行一个任务。
并发队列 - 它们以串行方式存储任务,并一次执行一个任务。
一些用于创建或获取队列的函数有:
dispatch_queue_create // create a serial or concurrent queue dispatch_queue_get_label // get the label of a given queue dispatch_get_main_queue // get the one and only main queue dispatch_get_global_queue // get one of the global concurrent queues
向队列添加任务
有两种类型的函数可以帮助向队列添加任务。他们是:
同步函数 -
dispatch_once - 仅在应用程序生命周期结束后提交一次任务。
dispatch_sync - 将任务提交到队列,并在任务完成后返回。
异步函数 -
Dispatch_async - 将提交任务并返回。
Dispatch_after - 立即返回,但延迟特定时间。
Dispatch_async - 立即返回,但任务被提交多次。
示例代码
以下是向队列添加任务的示例代码。
dispatch_async(dispatch_get_main_queue(), update_block); // add update_block to main queue dispatch_apply(i, some_queue, work_block) // add work_block to some_queue i times dispatch_sync(background_queue, blocking_block) // add blocking block to background queue and wait for completion
使用队列的一般示例
以下代码是使用队列的示例。
dispatch_async(background_queue, ^ { // Perform code that takes long time, here. Dispatch_async(dispatch_get_main_queue(), ^ { //Some other task, generally UI. }); });
关于并发控制,我们仅介绍这些内容,因为在您成为中级 iOS 开发人员之前,这些信息就足够了。
继续练习您学到的概念,并尝试根据您的需求对其进行修改和集成。
广告