Avatar
omochimetaru 9/27/2021 8:33 AM
基本的に、そもそも従来の形の非同期APIが提供される場合、
8:33 AM
なんらかの購読かタスク抽象オブジェクトに対する cancel メソッドが呼び出せるように設計されている事が多くて
8:33 AM
かつ、そのcancelメソッドはスレッドセーフになってる事が多いので、
8:33 AM
そのオブジェクトが Sendable準拠してくれていて、普通に { task.cancel() } がconccurency safeと判定される
8:34 AM
というのが自然な展開じゃないですかね?
8:34 AM
元記事でいうと、 勢いよくURLSessionTaskもSendableにしてしまっているが、スレッドセーフなはずなので大丈夫だと思う。 ↑これと同じ発想です。
8:35 AM
もしそうじゃなかったら、そもそもそのローレベルの(Swift concurrencyにラップする対象の)cancelメソッドを呼び出すことの安全性が保証できなそう。 (edited)