[Swift 开发] GCD常用方法
发布时间:2020-12-14 06:05:34 所属栏目:百科 来源:网络整理
导读:GCD常用的用法 子线程 DispatchQueue.global().async { print("开一条全局队列异步执行任务") } 主线程 DispatchQueue.main.async { print("在主队列执行任务") } wait var myQueue = DispatchQueue(label: "第一条线程")var myQueue2 = DispatchQueue(label
GCD常用的用法 子线程 DispatchQueue.global().async { print("开一条全局队列异步执行任务") } 主线程 DispatchQueue.main.async { print("在主队列执行任务") }
wait var myQueue = DispatchQueue(label: "第一条线程") var myQueue2 = DispatchQueue(label: "第二条线程") let group = DispatchGroup() myQueue.async(group: group,qos: .default,flags: []) { for _ in 0...10 { print("耗时任务一") } } myQueue.async(group: group,flags: []) { for _ in 0...10 { print("耗时任务二") sleep(UInt32(3)) } } //等待上面任务执行,会阻塞当前线程,超时就执行下面的,上面的继续执行。可以无限等待 .distantFuture let result = group.wait(timeout: .now() + 2.0) switch result { case .success: print("不超时,上面的两个任务都执行完") case .timedOut: print("超时了,上面的任务还没执行完执行这了") } print("接下来的操作") notify let group = DispatchGroup() myQueue?.async(group: group,flags: [],execute: { for _ in 0...10 { print("耗时任务一") } }) myQueue?.async(group: group,execute: { for _ in 0...10 { print("耗时任务二") } }) //执行完上面的两个耗时操作,回到myQueue队列中执行下一步的任务 group.notify(queue: myQueue!) { print("回到该队列中执行") } barrier myQueue?.async {//任务一 for _ in 0...10 { print("......") } } myQueue?.async {//任务二 for _ in 0...10 { print("++++++"); } } // barrier 会等待上面执行完毕再执行下面的,会阻塞当前线程 // myQueue?.async(flags:.barrier,execute: {//1. // print("000000") // }) myQueue?.async(group: nil,flags: .barrier,execute: {//2. print("000000") }) myQueue?.async { print("222221") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |