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技巧分享干货大放送!在家也能还原新上海的美味?一学就会的烹饪小技巧大分享~分享6个实用小技巧,让基金定投“赚更多”!春运开跑,各种交通工具上吃吃喝喝有技巧!营养专家经验分享万字长文总结提示词技巧!新加坡首届GPT-4提示工程大赛冠军最新分享每天一个“反套路”小技巧,觉醒就从今天开始!抗通胀!在加拿大生活,有哪些省钱技巧?夏季酷热天气下,有哪些保持清凉的补水技巧?如何快速掌握 Prompt 核心技巧与 GPT 技术理论? | 极客时间Nature:这12个技巧,彻底克服写作SCI论文的障碍!苹果称Swift是取代C++的最佳选择报考志愿的一些技巧WWDC24:看看Swift、SwiftUI、UIKit、Xcode 16新功能Costco无会员卡也能购物,最新技巧引热捧掌握Linux磁盘管理技巧:从零开始配置磁盘阵列!连续更新10篇文章后,我发现的微信公众号运营技巧从《甄嬛传》的埋梗手法,掌握剧本创作新技巧超有效生活小技巧讲座预告:拿个offer,易如反掌!(附学员案例+上岸技巧解析)一个提升自控力的作弊技巧,很多人都没想到小学「说服性写作」技巧 “A.F.O.R.E.S.T"原则
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。