如果2个线程一起运行,它将与全局变量值冲突

时间:2014-03-05 18:13:30

标签: multithreading

如果两个线程一起运行,那么两个线程将如何更新全局变量。该值是否会发生冲突?

1 个答案:

答案 0 :(得分:0)

这完全取决于您使用多个线程访问的全局变量所做的事情。

除非全局变量是线程安全的,否则变量在操作期间被锁定以更改其值,那么看起来很可能最终会出现竞争条件。

我不确定您正在使用哪种语言,但为应用更改时锁定的变量(例如属性)创建访问器可能是有意义的。在C#中,您可以使用以下伪代码轻松完成此操作:

private object _LockObject = new object();
private int _SomeProperty;

public int SomeProperty
{
    get { return _SomeProperty; }
    set
    {
        lock (_LockObject)
        {
            _SomeProperty = value;
        }
    }
}

lock确保更改变量值的代码是线程安全的(因为它在每次更新操作期间都被锁定)。