Swift数组上的并发不受保护的操作可能会导致哪些问题?

时间:2017-08-04 20:30:35

标签: swift concurrency

很清楚,对Swift数据结构(如Array)的未同步/解锁/取消静音操作可能会导致与内存相关的问题。然而,目前还不清楚究竟是哪些问题,更重要的是为什么。价值覆盖,内存损坏和co等问题。原因不明。

1 个答案:

答案 0 :(得分:0)

我认为理解在多线程系统中尝试无人防守访问可能产生的所有问题是明智的,也是值得欢迎的。

我(推测)的几个问题是:

项目已覆盖

2个线程尝试追加到数组。如果他们从相同的核心蜱开始,他们可能会最终压倒彼此的写操作。

内存损坏

如果2个线程都启动收缩/增长事件,然后两个线程都释放旧的内存指针位置,则可能会发生双重自由尝试。

读取半值(*不确定)

如果a[x] = reference/value type之类的写操作本身不是原子的,则可能是线程将开始写a[x]的地址,而另一个线程将读取[x]半地址。