iOS中多线程的示例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章给大家分享的是有关iOS中多线程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、iOS的三种多线程技术1、NSThread-优点:NSThread 比其
千家信息网最后更新 2025年01月20日iOS中多线程的示例分析
这篇文章给大家分享的是有关iOS中多线程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、iOS的三种多线程技术
1、NSThread
-优点:NSThread 比其他两个轻量级,使用简单
-缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销
2、NSOperation
不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
3、GCD
基于C语言的
二、基本使用
NSThread的基本使用
方式一:
// block let thread = Thread.init { print("1、----this is thread \(Thread.current) ") } thread.start()
方式二:
// SEL let thread2 = Thread.init(target: self, selector: #selector(text), object: nil) thread2.start()
@objc func text(){ print("2、----this is thread \(Thread.current) ") }
方式三:\
self.performSelector(inBackground: #selector(text2), with: nil)
输出
tips:可以给任意一个线程增加延迟看看
print(thread.isCancelled)//是否取消 print(thread.isExecuting)//是否在执行 print(thread.isFinished)//是否完成 print(thread.isMainThread)//是否是主线程
NSOperation的基本使用
方式一:
let queue = OperationQueue.init()// 最大线程数 queue.maxConcurrentOperationCount = 2 queue.addOperation { sleep(1) print("1111") } queue.addOperation { print("2222") }
输出结果如下:
方式二:可设置优先级
let queue = OperationQueue.init() let op = BlockOperation.init { print("op") } op.queuePriority = .normal //设置优先级 queue.addOperation(op) let op2 = BlockOperation.init { print("op2") } op2.queuePriority = .normal queue.addOperation(op2) queue.addOperation { print("op3") }
略作修改
let queue = OperationQueue.init() let op = BlockOperation.init { sleep(1) print("op") } op.queuePriority = .normal //设置优先级 queue.addOperation(op) let op2 = BlockOperation.init { sleep(1) print("op2") } op2.queuePriority = .veryHigh queue.addOperation(op2) queue.addOperation { print("op3") }
输出如下:
优先级如下:
GCD的基本使用
方式一:queue.async 异步
let queue = DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent) for i in 0...15 { queue.async { sleep(1) print("this is \(Thread.current) \(i)") } }
方式二:queue.sync 同步
let queue = DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent) for i in 0...15 { queue.sync { sleep(1) print("this is \(Thread.current) \(i)") } }
附加网络上一段代码
for i in 1...10 { DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async { NSLog("DispatchQoS.QoSClass.default, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async { NSLog("DispatchQoS.QoSClass.background, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.unspecified).async { NSLog("DispatchQoS.QoSClass.unspecified, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async { NSLog("DispatchQoS.QoSClass.userInitiated, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async { NSLog("DispatchQoS.QoSClass.userInteractive, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.utility).async { NSLog("DispatchQoS.QoSClass.utility, %d", i) } }
优先级userInteractive最高、background最低
感谢各位的阅读!关于"iOS中多线程的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
线程
方式
优先级
同步
输出
示例
分析
内容
数据
更多
篇文章
管理
不错
实用
最低
最大
最高
两个
事情
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
live邮箱服务器地址
内江软件开发必推青岗科技
软件开发设计工具都有哪些
全球大学生网络安全研究
网络安全实现的基本目标
日照网络安全案件
会计与数据库技术
软件开发免费技术支持
百度网络安全教育平台app
服务器2012系统怎么配置
宝德服务器市场份额
浙江机械硬盘服务器
互联网科技发达吗
计算机网络技术.
红帽杯网络安全
创建数据库链oracle
个人承包软件开发 发票
网络技术和多媒体有什么区别
创媒网络技术部门
软件开发 人工智能
软件开发的客户分析报告
病历模板软件开发
建党百年红色资源数据库
传播病毒是网络安全吗
python查询mysql数据库
具有国际影响力的科研数据库
vxworks能用什么数据库
银之河互联网科技有限公司
浙江吾空网络技术有限公司
地理空间数据库原理论述题