Sendable - @Sendable

Updated
Aug 3, 2022 9:52 AM
Created
Aug 3, 2022 9:50 AM
Tags
Swift
Attributes

💡
How to use @Sendable

Functions can be passed across concurrency domains and will therefore require sendable conformance too. However, functions can’t conform to protocols, so Swift introduced the @Sendable attribute. Examples of functions that you can pass around are global function declarations, closures, and accessors like getters and setters.

簡単に言えば、protocol Sendableは安全な並行性を保証するものしかし、関数はprotocolに適合することができないので、属性として @ Sendableが作られた。これにより、関数は並行して実行して問題ないことを示す。問題ないことを示すには関数の中身が全てsendableに適合しているものたちを利用している必要があるので、そのチェックが働く。チェックは付加価値で、本質は、関数そのものが並行に実行できることを示したいから。的な感じかなニュアンスとして、昔存在してた @nonescapingに近い、opt-inかoutの表現の問題だが

多分これがSwift6で @Sendableがないclosure使ってるやつをエラーにしたりするんだろう