gpt4 book ai didi

multithreading - 为什么线程很危险?

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

我一直被告知要为多个线程将访问的变量加锁,我一直认为这是因为您想确保正在使用的值在写回之前不会改变
IE。

mutex.lock()
int a = sharedVar
a = someComplexOperation(a)
sharedVar = a
mutex.unlock()

你会锁定它是有道理的。但在其他情况下,我不明白为什么我不能不使用互斥体。

线程 A:
sharedVar = someFunction()

线程 B:
localVar = sharedVar

在这种情况下可能会出现什么问题?特别是如果我不在乎线程 B 读取线程 A 分配的任何特定值。

最佳答案

这在很大程度上取决于 sharedVar 的类型、您使用的语言、任何框架和平台。在许多情况下,可以将单个值分配给 sharedVar可能需要多个指令,在这种情况下,您可以读取值的“半集”副本。

即使情况并非如此,并且赋值是原子的,如果没有 memory barrier,您也可能看不到最新值。到位。

关于multithreading - 为什么线程很危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868488/

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