gpt4 book ai didi

c# - 简单地分配变量时是否需要使用锁?

转载 作者:行者123 更新时间:2023-12-03 12:49:24 24 4
gpt4 key购买 nike

当多线程时,我知道如果执行诸如向列表添加和项目等操作,我需要锁定变量,否则我会得到跨线程异常。但是我在分配变量时需要锁定它们吗?我不介意线程是否获取变量的旧实例 - 我只是不希望它出错。这是我的意思的一个例子:

    public void Run()
{
var thread1 = new Thread(new ThreadStart(Test));
var thread2 = new Thread(new ThreadStart(Test));
thread1.Start();
thread2.Start();
}

private static int _test;

private void Test()
{
while (true)
{
_test += 1;
}
}

最佳答案

如果您只是分配一个int,那么不行。但在这里你不仅仅是分配。你正在递增。所以你需要某种同步。

如果您想增加,请使用 Interlocked.Increment :

Interlocked.Increment(ref _test);

关于c# - 简单地分配变量时是否需要使用锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455799/

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