Bendi新闻
>
Swift 开发者通过 GitHub 分享异步编程技巧

Swift 开发者通过 GitHub 分享异步编程技巧

作者 | Sergio De Simone
译者 | 明知山
策划 | Tina

曾在 Crashlytics 和苹果工作的 Swift 开发者 Matt Massicotte 最近发布了一个 Github 代码库,收集了许多有用的技巧,便于更轻松地使用 Swift 并发性和解决经常出现的问题,同时提到了人们可能容易掉入的常见陷阱。

async/await的出现和 Swift 5.5 支持 actor 以来,Swift 并发编程一直在持续发展,直到在 Swift 5.10 中引入了完整的数据隔离和结构化并发。掌握所有新的并发特性本身就是一项相当艰巨的任务,而雪上加霜的是,Swift 并发原语需要与之前的技术和库(如 Grand Central Dispatch (GCD))共存。

在这种背景下,Massicotte 的这个项目库旨在记录和分享在使用 Swift 并发性和远离 GCD 时可能面临的解决方案和危险。

Swift 并发性可能真的很难用好。我认为记录和分享人们在使用过程中可能遇到的解决方案和危险会对我们有所裨益。我绝对不是说这些东西已经很全面或所提出的解决方案足够好。我也在学习。也非常欢迎大家参与贡献,尤其是提出问题!

这个代码库分为几个部分,每个部分都围绕一个主题,从创建异步上下文的基本任务到处理协议、隔离、SwiftUI 等问题。

例如,Massicotte 解释说,在 SwiftUI 中,有关并发性的一个棘手的问题是,只有 SwiftUI Viewbody 访问器是 MainActor 安全的,这使得在 View 中声明的任何其他函数或属性都是非隔离的,并且容易发生竞态条件。他提出的解决方案是显式声明更复杂视图的 @MainActor 属性:

@MainActorstruct MyView: View {    var body: some View {        Text("Body")    }}

类似地,通过协议正确处理并发性可能会很复杂,正如 Massicotte 所描述的那样,你希望使一个MainActor隔离的类型符合你无法控制其定义的协议。

可能你也知道,actor 需要确保只有async方法可以从外部访问其状态,在这种情况下,编译器可以确保永远不会发生竞态条件。因此,如果一个 actor 隔离的类型,例如,只能在MainActor内部使用的类型,必须符合包含非 async 方法的协议,你就需要多加注意。最简单的解决方案是使用nonisolated关键字指示编译器,采用“非隔离”一致性,或者你也可以优先使用委托来绕过这个问题。

如前所述,Massicotte 描述了许多问题以及可能的解决方案。即使这个代码库所建议的解决方案可能并不完全令人满意,但肯定会增加你对使用 Swift 并发性时可能出错的各种情况的认识,因此它会是一个非常有用的资源。

查看英文原文

https://www.infoq.com/news/2024/04/swift-concurrent-recipes/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

谷歌大裁员引发元老集体抗议:领导脑袋空空,无能的中层管理团队不断扩大

“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前 AI 总监爆火科普 LLM

德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

微信扫码关注该文公众号作者

来源:InfoQ

相关新闻

免费试听|编程技巧+模型理解+实战项目,有效提高简历含金量,增加通过初筛概率!今日开课|针对岗位要求,编程技巧+模型理解+实战项目,全方位提升求职综合能力!数据科学|十二大可以写进简历的名企实战项目+编程技巧+模型理解,全方位提升你的综合能力!数据分析|一线数据科学家教研组用心研发,编程技巧+模型理解+实战项目,全方位提升数据分析综合能力!会议组织者洞见---通过成功故事、技巧和经验教训获取灵感,助您更好地组织会议Costco无会员卡也能购物,美国女子分享技巧玩转摄影魔法|万能创意vlog技巧分享干货大放送!在家也能还原新上海的美味?一学就会的烹饪小技巧大分享~在加国一星期吃饭只花23元? 女子分享极致省钱技巧分享6个实用小技巧,让基金定投“赚更多”!春运开跑,各种交通工具上吃吃喝喝有技巧!营养专家经验分享万字长文总结提示词技巧!新加坡首届GPT-4提示工程大赛冠军最新分享说下 10 个高级的 SQL 查询技巧绝了!听了交大博后师兄的AI提示词技巧后,我真的4小时就写完了1篇SCI!纽约街头的安全隐患:雨天驾驶技巧全解析精通 Linux:深入解析管道、grep、sed 与 awk 命令的实用技巧攻略|观熊季到来!这些看熊小技巧必须收藏!亲身经验告诉你,熊危险吗?求职秘籍|10个留学生变身沟通达人的有效技巧10分钟读完1篇5+SCI!连导师都直呼666的神级技巧!全都总结好了!【0元领】三大唱片发布Q2财报,碧梨Spotify 月度听众数超越 Taylor Swift精准排查网络问题:深入解析nslookup工具的强大功能与实用技巧ISIS恐怖组织瞄准霉霉Taylor Swift演唱会,伦敦演唱会恐取消?怎么才能在西雅图找到符合预算的好房子?这个搜房小技巧一定要提前知道“杀死尽可能多的人”!Taylor Swift演唱会恐有恐袭!极端分子自制炸弹、准备引爆演唱会!
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。