问题现象
我们知道,Swift 5.5 引入的新并发模型极大简化了并行逻辑代码的开发,更重要的是:使用新并发模型中的 Actor 原语可以大大降低并发数据竞争的可能性。
不过,即便 Actor 有如此神奇之功效,它也不是“万能药”,仍不能防止误用带来的问题。比如:Actor 重入(Reentrancy)。
Actor 重入会引起 Actor 内部状态不一致,从而导致执行可能会有严重的偏差!
学完本篇博文,您将掌握如下内容:
- 问题现象
- 1. 一个简单的例子告诉你什么是 Actor 重入!
- 2. 一个更实际的例子
- 3. Actor 自带线程安全光环为什么还会引起重入问题?
- 4. 解决之道
- 5. 总结
- 结束语
对于并发中可能遇到各种“千奇百怪”的问题,没有所谓“一招鲜吃遍天”的解决方案,更没有“银弹”!相信学完本篇,我们能更加自如的量体裁衣,以不变应万变,将所有问题消弭于无形!