【发布时间】:2013-05-21 18:22:09
【问题描述】:
假设有一个静态变量被 2 个线程访问。
public static int val = 1;
现在假设线程 1 执行这样的语句
if(val==1)
{
val +=1
}
然而,在上述语句中的检查之后和添加之前,线程 2 将 val 的值更改为其他值。
现在这会导致一些令人讨厌的错误。这发生在我的代码中。
有什么方法可以让线程 1 注意到 val 的值已更改,而不是添加,而是返回并再次执行检查。
【问题讨论】:
-
根据您的问题,我建议
Interlocked.CompareExchange,如下面的答案中所建议的那样。如果您认为这不合适,您应该更改您的问题,向我们展示您正在尝试解决的真实问题。
标签: c# .net multithreading thread-safety