gpt4 book ai didi

multithreading - 在 Swift 中设置和读取 Bool 原子操作吗?

转载 作者:行者123 更新时间:2023-12-01 23:12:41 25 4
gpt4 key购买 nike

如标题所述简单。基本上,在这个例子中,我们能不能得到一个无效的状态:

var myBool = false

// Thread 1
while true {
if randomEvent() {
myBool = true
}
}

// Thread 2
while true {
if myBool {
print("Was set to true")
} else {
print("Not set")
}
}

这会因为 myBool 处于某种无效状态而崩溃吗?或者这“安全”吗?

最佳答案

经过 Swift Users 邮件列表的讨论,确认 Bool 值的读写在 Swift 中不是原子操作。此外,上面的代码可能会被编译器优化,因为 myBool 从未在线程 2 的上下文中设置,它可能会优化检查。在 Swift 中执行此操作的唯一有效方法是使用 GCD 正确编码,或使用操作系统提供的锁定功能。

关于multithreading - 在 Swift 中设置和读取 Bool 原子操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41639806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com