Multithreading 如果两个线程同时运行,它是否会合并全局变量值

Multithreading 如果两个线程同时运行,它是否会合并全局变量值,multithreading,Multithreading,如果两个线程同时运行,那么两个线程将如何更新全局变量。该值是否会冲突?这将完全取决于您对多个线程访问的全局变量所做的操作 除非全局变量是线程安全的,在某种意义上说,该变量在更改其值的操作期间被锁定,否则很可能最终会出现争用条件 我不确定您使用的是哪种语言,但为变量创建一个访问器可能是有意义的,例如在应用更改时锁定的属性。在C语言中,您可以使用以下伪代码作为示例轻松实现这一点: private object _LockObject = new object(); private int _Some

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

这将完全取决于您对多个线程访问的全局变量所做的操作

除非全局变量是线程安全的,在某种意义上说,该变量在更改其值的操作期间被锁定,否则很可能最终会出现争用条件

我不确定您使用的是哪种语言,但为变量创建一个访问器可能是有意义的,例如在应用更改时锁定的属性。在C语言中,您可以使用以下伪代码作为示例轻松实现这一点:

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

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

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

您应该使用锁来防止多个线程同时更新该值。如何执行此操作取决于所使用的语言/框架。请使用与共享数据耦合的锁,并仅在线程持有锁时更新变量。当然,这仅适用于至少由一个线程写入变量的情况。对于许多没有锁的线程,只读是可以的。