【发布时间】:2023-12-28 00:45:01
【问题描述】:
基本算术运算线程安全吗?
比如对一个全局变量有++操作,会被不同的线程修改,是否需要加锁?
例如
void MyThread() // can have many running instances
{
aGlobal++;
}
或者应该是
void MyThread()
{
lock( lockerObj)
{
aGlobal++;
}
}
【问题讨论】:
-
这不是一个排他的算术运算......也有一个变量写入!
a + a与a = a + a不同。你必须使用Interlocked.Increment或类似的!
标签: c# thread-safety locking arithmetic-expressions