gpt4 book ai didi

c# - Interlocked.CompareExchange 的参数是原子操作的一部分吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:41 25 4
gpt4 key购买 nike

以下语句(寻址与第一个和第三个参数相同的变量)是否总是会导致变量 b 在完成时获取变量 c 的值,或者另一个线程是否有可能在获取参数时更改一个或多个参数在比较操作期间导致第一个和第三个参数包含不同的值?

a = Interlocked.CompareExchange(ref b, c, b)

最佳答案

这是一个有趣的问题;我怀疑答案是“不能保证”,仅仅是因为字段的值可以在 ldfld (最后一个参数)之后但在通过地址(之前通过ldflda),但这在很大程度上是学术性的,就像这样的线程代码一样,重要的是做一些明显正确的事情。

显然,“不能保证”不允许我们确定太多,因此毫无用处。如果我们想要“有保证”的答案,那么这个问题就没有实际意义了,因为简单地使用 Interlocked.Exchange 会更容易、更明显。

关于c# - Interlocked.CompareExchange 的参数是原子操作的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118144/

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