【译】SE-0302 Sendable 和 @Sendable 闭包
- Proposal: SE-0302
- Authors: Chris Lattner, Doug Gregor
- Review Manager: John McCall
- Status: Accepted (2021-03-16)
- Implementation: apple/swift#35264
- Major Contributors: Dave Abrahams, Paul Cantrell, Matthew Johnson, John McCall
- Review: (first review) (revision announcement) (second review) (acceptance)
简介
Swift Concurrency 的其中一个关键目标就是“提供一种机制来隔离并发程序中的状态,以消除 data races”。这样的机制将会是通用编程语言的一次重大进步 – 大多数语言提供的并发编程抽象会使程序员面临范围宽广的 bug,包括 race conditions,死锁和其它问题。
这个提案里描述了一种方式,去解决这个领域面临的其中一个问题 – 如何对结构化并发和 Actor 消息传递的值进行类型检查。因此,这是一个统一的理论,它提供了一些基本的类型系统机制,使它们既保障安全又能很好地协同工作。
这种实现方式会提供一个名为 Sendable
的 marker 协议,以及一个可应用于函数的 @Sendable
注解。