swift有没有像Rust的数据竞争保证那样的并发安全保证,或者像样的函数并发支持?
发布于 2019-08-17 04:50:29
在使用普通块时,没有任何swift没有这些被授权者,所以你需要自己实现一个锁定机制,以保证数据完整性并自己解决竞争条件。
这是一个示例代码,您可以在游乐场中亲自尝试,您可以看到结果符合循环外的任何预期输出,因为两个队列可以互换地使用相同的资源。希望这能帮上忙。
import Cocoa
var x = 1
let q1 = DispatchQueue(label: "FirstQueue")
let q2 = DispatchQueue(label: "SecondQueue")
q1.async {
for i in 0...999 {
print("First Queue working \(Thread.current)")
x += 1
}
print(x)
}
q2.async {
for i in 0...999 {
print("Second queue working \(Thread.current)")
x -= 1
}
print(x)
}https://stackoverflow.com/questions/57529740
复制相似问题