Redian新闻
>
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 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

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

戳这里提交新闻线索和高质量文章给我们。
相关阅读
ShowMeBug李亚飞:IDE与AI自动编程技术将增强超级程序员第三方开发者正利用《GTA 5》源代码将游戏移植至 Linux / Switch/安卓平台需要什么才能成为春天Taylor swift 和Sam Altman一起进入亿万富翁榜单,美国的伟大所在吧!任天堂闪击GitHub,一夜删光8000多个模拟器代码仓库今日arXiv最热大模型论文:首个面向AI的python编程框架,提升大模型编程能力新思路微软宣布开源 MS-DOS 4.0,冲到 GitHub 第一了!1人开发《庄园领主》2天爆卖百万套,神奇开发者接受Epic采访:“我真是新手”肺癌三期患者通过器官移植获新生未央播报 | 中国10亿参数规模以上大模型数量已超100个 Swift将推出央行数字货币互联平台女主播卖车送福利;假提豪车;普利司通的忧伤;医美直播凉凉Create 2024百度AI开发者大会:李彦宏带来三大AI开发工具,让人人都是开发者三大AI开发神器亮相!李彦宏:只要会说话,就可以成为一名开发者刚买的榨汁机又坏了麦当劳使用 GitHub Actions 和可重用工作流简化 CI 管道初创团队不到10人,Augment获2.52亿美元融资,将成GitHub Copilot竞争对手30 多年前被 Linux、Windows “ 灭掉 ” 的操作系统 MS-DOS 4.0,微软在 GitHub 上开源了著名网站StubHub竟买到假票!芝加哥父女气炸Ansible 你快点:Ansible 执行过程分析、异步、效率优化Adidas会员大促超好价,Ultraboost Light只要$57,Swift Run $21《在五星红旗下成长》续02清华微软开源全新提示词压缩工具,长度骤降80%!GitHub怒砍3.1K星火速冲上GitHub热榜——我的VS Code不可能这么可爱!文末送书 | 李沐力荐!GitHub揽获64.9k星的数据结构与算法教程,出版了!上海率先打响AI开发者争夺战!大咖云集,先锋毕至 | 2024全球开发者先锋大会如何保护好你的退休资产?Ansible你快点:Ansible执行过程分析、异步、效率优化免费试听|编程技巧+模型理解+实战项目,有效提高简历含金量,增加通过初筛概率!马斯克打脸OpenAI,全球最大巨无霸模型Grok-1开源!3140亿参数8个MoE,GitHub狂揽6k星【喜报】3枚Williams, 3枚Amherst, 2枚Swarthmore, 文理学院大丰收 (附今天分享会信息)GitHub版Devin上线,会打字就能开发应用,微软CEO:重新定义IDEJHU/WashU/UCSB三校放榜!JHU缩招13%!WashU录取缩水...如何使用多个 GitHub 帐户今日arXiv最热NLP大模型论文:Github万星!北航发布零代码大模型微调平台LlamaFactoryGitHub 宣布将 Action 运行器升级至 4-vCPU 和 16 GiB 内存跨境贸易“微信”SWIFT是怎么回事?会说话就能搞编程,听完李彦宏三大开发神器,我退了所有编程课
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。