如何使用swift中的GCD
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"如何使用swift中的GCD",在日常操作中,相信很多人在如何使用swift中的GCD问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用swift
千家信息网最后更新 2026年11月04日如何使用swift中的GCD
这篇文章主要介绍"如何使用swift中的GCD",在日常操作中,相信很多人在如何使用swift中的GCD问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用swift中的GCD"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Grand Central Dispath(GCD)
GCD是采用任务+队列的方式,有易用、效率高、性能好的特点
//concurrent 并行let queue = DispatchQueue( label: "myQueue", qos: DispatchQoS.default, attributes: DispatchQueue.Attributes.concurrent, autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.inherit, target: nil)//syncqueue.sync { sleep(1) print("in queue sync")}//asyncqueue.async { sleep(1) print("in queue async")}//asyncAfterqueue.asyncAfter(deadline: .now() + 1) { print("in queue asyncAfter")}print("after invoke queue method")/* in queue sync after invoke queue method in queue async in queue asyncAfter */DispatchGroup-wait
//DispatchGroup-waitlet workingGroup = DispatchGroup()let workingQueue = DispatchQueue(label: "request_queue")workingGroup.enter()workingQueue.async { sleep(1) print("A done") workingGroup.leave()}workingGroup.enter()workingQueue.async { print("B done") workingGroup.leave()}print("first")//workingGroup.wait()//print("last")/* first A done B done last */DispatchGroup-notify
//DispatchGroup-notifyworkingGroup.notify(queue: workingQueue) { print("A and B done")}print("other")/* first other A done B done A and B done */DispatchSource-Timer
//DispatchSource-Timervar seconds = 10let timer: DispatchSourceTimer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.global())timer.schedule(deadline: .now(), repeating: 1.0)timer.setEventHandler { seconds -= 1 if seconds < 0 { timer.cancel() } else { print(seconds) }}timer.resume()/* 9 8 7 6 5 4 3 2 1 0 */实现一个线程安全的Array的读和写
//实现一个线程安全的Array的读和写var array = Array(0...1000)let lock = NSLock()func getLastItem() -> Int? { lock.lock() var temp: Int? = nil if array.count > 0 { temp = array[array.count - 1] } lock.unlock() return temp}func removeLastItem() { lock.lock() array.removeLast() lock.unlock()}queue.async { for _ in 0..<1000{ removeLastItem() }}queue.async { for _ in 0..<1000 { if let item = getLastItem() { print(item) } }}到此,关于"如何使用swift中的GCD"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
学习
安全
更多
线程
帮助
实用
接下来
任务
性能
效率
文章
方式
方法
特点
理论
知识
篇文章
网站
资料
跟着
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
互联网科技公司排名
互联网科技产业
蓝思科技飞鸽互联网
互联网科技官网
互联网科技深圳
金融科技还是互联网
金融科技创新监管互联网金融
迪茉互联网科技
互联网金融科技平台
睿民互联网科技
齐家互联网科技有限公司
互联网科技的未来发展
多迪互联网科技有限公司
互联网公司会议桌创意科技软装饰
青岛中康互联网医疗科技有限公司
洛阳昕诺飞互联网科技有限公司
恒生互联网科技业指数调整周期
山东子淼互联网科技有限公司
上海创道互联网络科技有限公司
互联网的科技创新
掌上梦互联网科技
深圳艾佳互联网科技
国外互联网科技网站
深圳互联网科技怎么样
青岛中康互联网医疗科技有限公司
南山科技园互联网公司有哪些
上海科技产业互联网平台
广州有谷有贝互联网科技有限公司
新氧科技和美国互联网有关系吗