gpt4 book ai didi

c# - 解决 C# 中的线程冲突

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:01 24 4
gpt4 key购买 nike

假设有一个静态变量被 2 个线程访问。

public static int val = 1;

现在假设线程 1 执行这样的语句

if(val==1)
{
val +=1
}

然而,在检查之后和在上述语句中添加之前,线程 2 将 val 的值更改为其他值。

现在这会导致一些严重的错误。这发生在我的代码中。

有什么方法可以让线程 1 注意到 val 的值已更改,而不是添加,而是返回并再次执行检查。

最佳答案

特别是对于您的示例,您可以:

var originalValue = Interlocked.CompareExchange(ref val, 
2, //update val to this value
1); //if val matches this value
if(originalValue == 1)
{
//the update occurred
}

关于c# - 解决 C# 中的线程冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676872/

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