如果两个线程一起运行,那么两个线程将如何更新全局变量。该值是否会发生冲突?
答案 0 :(得分:0)
这完全取决于您使用多个线程访问的全局变量所做的事情。
除非全局变量是线程安全的,否则变量在操作期间被锁定以更改其值,那么看起来很可能最终会出现竞争条件。
我不确定您正在使用哪种语言,但为应用更改时锁定的变量(例如属性)创建访问器可能是有意义的。在C#中,您可以使用以下伪代码轻松完成此操作:
private object _LockObject = new object();
private int _SomeProperty;
public int SomeProperty
{
get { return _SomeProperty; }
set
{
lock (_LockObject)
{
_SomeProperty = value;
}
}
}
lock
确保更改变量值的代码是线程安全的(因为它在每次更新操作期间都被锁定)。