目录
前言
可见性是一种复杂的属性,因为其错误总会违背我们的直觉。在单线程环境中,如果向某个变量先写入值,然后在没有其他写入操作的情况下读取这个变量,那么总能得到相同的值。然而,当读和写操作在不同线程中执行时,情况却并非如此。
通常没我们是无法确保执行读操作的线程能适时的看到其他线程写入的值,有时候甚至是不可能的事情。
那么,为什么无法确保执行读操作的线程能适时的看到?为了彻底了解该问题,首先我们需要了解一些线程的基本概念。
1.基本概念
1.1线程与进程
进程:程序(任务)的执行过程,是动态的;持有资源(内存,文件)和线程,是资源和线程的载体。
线程:线程是系统中最小的执行单元,同一进程中有很多线程,线程共享进程的资源。
换句话说,n个线程(n大于等于1)和所有的资源共同组成了进程,参见下图: