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