锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用这个特性实现对共享数据的协调访问协议,即一次只有一个线程能够使用该共享数据。可见性相对比较复杂一些,它必须保证释放锁之前对数据做出的更改对于随后获得该锁的线程是可见的,否则若没有这种可见性保证,线程访问的共享变量可能是修改之前的值或不一样的值,这样将会引发很多严重问题。
锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用这个特性实现对共享数据的协调访问协议,即一次只有一个线程能够使用该共享数据。可见性相对比较复杂一些,它必须保证释放锁之前对数据做出的更改对于随后获得该锁的线程是可见的,否则若没有这种可见性保证,线程访问的共享变量可能是修改之前的值或不一样的值,这样将会引发很多严重问题。