
使用Swift 5.5中新并发模型时,在有些情况下我们希望隔离特定一段代码片段的执行,防止数据竞争(Data Race)。这往往发生在代码流中有多个不同Actor执行的时候。

我们使用上面的App从网络服务器获取并显示所有emoji图片,并利用本地磁盘和内存两级缓存加速图片的显示速度。
在所有图片都已缓存到本地的情况下,浏览所有图片后,磁盘缓存和内存缓存数量应该相等。但从上图App底部状态栏看到的情况并不是这样,最后内存缓存数量竟然多于磁盘缓存数量。
这是怎么回事呢?
让我们从源代码开始一场探寻之旅吧!
Let’s go! 😉
首先,简单介绍下App的基本实现。
App在启动时从网络获取全部图片列表,然后在LazyVGrid中显示它们。
其中每张图片在一个单独的ThumbImage视图中显示:
actor EmojiArtModel: