当多线程我知道我需要锁定变量,如果像添加和项目到列表等,或者我会得到一个跨线程异常.但是在分配变量时我是否需要锁定它们?我不介意线程是否获得变量的旧实例 - 我只是不希望它出错.这是我的意思的一个例子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你只是分配一个int,那么没有.但在这里,你不只是分配.你正在递增.所以你需要某种同步.
在你想要增加,使用Interlocked.Increment:
Interlocked.Increment(ref _test);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |