You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

持有非Sendable单例引用的类是否可符合Sendable协议?

MyClass是否符合Sendable协议?

结论是:MyClass不符合Sendable协议。

原因如下:

  • Sendable的核心要求是类型能安全地在不同任务/线程间传递、使用,不会引发数据竞争。判断一个类是否符合Sendable,不仅要看自身状态,还要看它持有的所有引用类型是否都满足Sendable要求(或有明确的同步保护机制)。
  • 虽然MyClass自身只有不可变的networkHelper属性,但NetworkHelper是非Sendable且存在内部可变状态的类——哪怕它是单例,也改变不了它线程不安全的本质。
  • 当MyClass的实例在不同线程间传递并调用makeNetworkRequest时,本质是在不同线程访问NetworkHelper的非线程安全状态,这会引入数据竞争风险。而Sendable要求类型传递后,其所有关联的操作都是线程安全的,显然MyClass做不到这一点。

所以即使MyClass自身没有可变状态,只要它持有非Sendable的引用,且该引用指向的对象没有足够的线程安全保障,MyClass就不符合Sendable协议。

内容的提问来源于stack exchange,提问作者bdesham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:31:01