[Swift4.2互动教程]七、常见概念-(12)使用DispatchGroup(调度组)管理线程数组

本文将为你演示调度组的使用,使用调度组可以将多个线程中的人物进行组合管理,
可以设置当多个相同层次的任务完成之后,再执行另一项任务。

首先导入需要使用的界面工具框架

import UIKit

在控制台输出一条日志语句,表示调试任务开始执行

print("Start the task and display teh Loading animation.")

接着初始化一个调度组对象。

let gro =DispatchGroup()

同时运行多个任务,
每个任务的启动时间是按照加入队列的顺序,
结束的顺序则依赖各自具体的任务。

let globalQueue = DispatchQueue.global()

通过队列的异步方法,将传入的block块,放入指定的queue队列里运行。

1 globalQueue.async(group: gro,
2                   excute: DispatchWorkItem(block:{print("Load a user picture from the remote server.")}))

使用相同的方式,将另外一个异步执行的线程任务,添加到队列中。

1 globalQueue.async(group: gro,
2                   excute: DispatchWorkItem(block:{print("Get the annual record of all transactions by user id.")}))

当调度组中的任务全部完成后,调用通知方法,完成调度组的任务,并执行接下来的块中的动作。

1 gro.notify(queue: globalQueue,
2            execute:{print("Complete all tasks and hide the Loading animation.")})

再次将第三个异步执行的线程任务,添加到队列中。
然后点击底部的显示控制台按钮图标,打开控制台。

1 globalQueue.async(group: gro,
2                   excute: DispatchWorkItem(block:{print("Get the collection of goods by user id.")}))

技巧:1.使用快捷键Command+Shift+O,可以通过键入关键词的方式,快速切换至某个文件。
           2.下载Xcode尽量别用迅雷,迅雷有可能会提供包含后门的Xcode

原文地址:https://www.cnblogs.com/strengthen/p/9780209.html

时间: 2024-11-08 14:30:02

[Swift4.2互动教程]七、常见概念-(12)使用DispatchGroup(调度组)管理线程数组的相关文章

[Swift4.2互动教程]七、常见概念-(6)日期Date和DateFormatter日期的格式化

本文将为你演示日期类型的使用,以及如何对日期进行格式化. 首先引入需要使用到的界面框架 import UIKit 初始化一个日期对象,它的值和当前电脑中的日期相同 var date = Date() 获得当前60分钟之后的时间 date.addTimeInterval(60 * 60) 获得当前60分钟之后的时间,并存储再一个常量之中. let sencondDate = date.addTimeInterval(60 * 60) 对两个时间进行比较,当时间小于进行比较的时间时,返回值为-1.比

[Swift4.2互动教程]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据

在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项(New File),创建一个类文件,用来存档用户数据.在弹出的文件模板选择窗口中,保持默认的选项(Cocoa Touch Class),然后点击下一步按钮,进入下一步设置页面.在类名输入框内输入类的名称. Class: Person 接着输入父类的名称. Subclass of: NSObject

[Swift4.2互动教程]七、常见概念 - (2)点CGPoint和变形CGAffineTransform的使用

本文将为你演示点对象CGPoint的使用,其中CG表示来自CoreGraphic(核心图形)这个跨平台框架 首先导入需要使用的两个框架第一个框架表示界面工具框架第二个框架表示核心绘图和动画框架 1 import UIKit 2 import QuartzCore 定义一个点对象,并设置它的位置为原点.从右侧的结果可以看出,原点的x和y值都是0 let zeroPoint = CGPoint.zero 初始化另一个点对象 var point = CGPoint() 接着查看点对象的坐标值,从右侧的

[Swift4.2互动教程]七、常见概念 - (3)尺寸CGSize的使用详解

本文将为你演示CGSize的使用 首先导入需要使用到的两个框架 1 import UIKit 2 import QuartzCore 定义一个尺寸对象,尺寸对象包含宽度和和高度两个参数.从右侧的结果可以看出,此时该尺寸对象的宽度和高度都是0 let zeroSize = CGSize.zero 初始化另一个尺寸对象,并设置它的宽度为20,高度为10 let size = CGSize(width: 20, height: 10) 查看该尺寸对象的高度和宽度的数值 1 size.width 2 s

[Swift4.2互动教程]七、常见概念-(13)使用UIScreen查询设备屏幕信息

本文将为你演示,如何获得设备的屏幕信息,了解设备的屏幕尺寸等信息,才能做出适配性更好的应用程序. 首先导入需要使用到的界面工具框架 import UIKit 然后通过UIScreen类,就可以获得设备的屏幕信息.这里获得设备的屏幕尺寸,点击显示结果图标,查看获得的结果 UIScreen.main.availableModes.description 从结果列表中可以看出,屏幕的宽度为2048像素,高度为1536像素.再次点击结果图标,关闭结果列表. [<UIScreenMode: ox60000

[Swift4.2互动教程]八、实用进阶-(6)通过属性进行对象间的消息传递

本文将演示,如何通过一个对象作为另一个对象的属性,从而通过设置属性的值,来实现对象之间的消息传递.首先打开自定义视图的代码文件(CustomView.swift) 1 import UIKit 2 //使当前的自定义类,遵循文本输入框代理协议 3 class CustomView: UIView,UITextFieldDelegate{ 4 //给自定义类添加一个文本框类型的属性 5 var textField: UITextField! 6 //添加一个视图控制器类的属性,并设置类型为弱引用,

《互动教程 for Photoshop CC》已成功发布在App Store

不看视频不看书,超级好玩的PS教程! App store下载量超百万! 超千份来自世界各地用户的五星好评以及诚意推荐! 单击.双击.长按.拖动及各种快捷键,就像您在真正的Photoshop上操作一样! 比观看视频.阅读书籍更加有效.有趣! 指尖点亮设计之源!哪里不会戳哪里,妈妈再也不会担心我的Ps了! 一起动手来戳Photoshop吧! App Store免费下载地址: https://itunes.apple.com/cn/app/hu-dong-jiao-cheng-for-photosho

Swift中文教程(七)--协议,扩展和泛型

Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(structs)都可采用协议(protocol): 1 class SimpleClass: ExampleProtocol { 2 var simpleDescription: String = "A very simple class." 3 var anotherProperty: Int

3.28日第七次作业12章沟通管理13章合同管理

3.28日第七次作业12章沟通管理13章合同管理   第12章.项目沟通管理   1.项目沟通管理包括哪些过程?(记)P349 答:1).沟通计划编制 2).信息分发 3).绩效报告 4).项目干系人管理 2.阻碍有效沟通的因素有哪些?P351-352 答:1).沟通双方的物理距离 2).沟通的环境因素 3).缺乏清晰的沟通渠道 4).复杂的组织结构 5).复杂的技术术语 6).有害的态度 3.沟通计划编制的第一步是什么?目的是什么?P353 答:沟通计划编制的第一步是干系人分析.其目的是得出项