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



如果两个线程一起运行,则两个线程将如何更新全局变量。该值会冲突吗?

这将完全取决于您在通过多个线程访问的全局变量所做的事情。

除非全局变量是线程安全的,否则该变量在操作过程中被锁定以更改其值,那么似乎您可能最终可能会发生种族条件。

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

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

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

相关内容

最新更新