Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift阵列上并发的无保护操作可能会导致哪些问题?_Swift_Concurrency - Fatal编程技术网

Swift阵列上并发的无保护操作可能会导致哪些问题?

Swift阵列上并发的无保护操作可能会导致哪些问题?,swift,concurrency,Swift,Concurrency,很明显,在Swift数据结构(如数组)上的非同步/解锁/非静音操作可能会导致与内存相关的问题。但目前还不清楚到底是哪些问题,更重要的是为什么。诸如值被覆盖、内存损坏和co.等问题无法解释 我认为了解在多线程系统中尝试无防护访问可能会产生的所有问题是明智的,也是受欢迎的 我(推测)的几个问题是: 项目被覆盖 2个线程试图附加到数组。如果它们从同一个核心开始,它们可能最终会覆盖彼此的写操作 内存损坏 如果两个线程都启动收缩/增长事件,然后都释放旧内存指针位置,则可能会发生双重释放尝试 半值读取(*不

很明显,在Swift数据结构(如数组)上的非同步/解锁/非静音操作可能会导致与内存相关的问题。但目前还不清楚到底是哪些问题,更重要的是为什么。诸如值被覆盖、内存损坏和co.等问题无法解释

我认为了解在多线程系统中尝试无防护访问可能会产生的所有问题是明智的,也是受欢迎的

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

项目被覆盖 2个线程试图附加到数组。如果它们从同一个核心开始,它们可能最终会覆盖彼此的写操作

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

半值读取(*不确定) 如果像
a[x]=reference/value type
这样的写入操作本身不是原子操作,那么可能是一个线程将开始写入
a[x]
的地址,而另一个线程将读取[x]半地址