私有存储空间:
- 栈(尽管并非完全无法被其他线程访问,但一般情况下仍然可以认为 是私有的数据)。
- 线程局部存储(Thread Local Storage, TLS)。线程局部存储(TLS),是一种变量的存储方法,这个变量在它所在的线程内是全局可访问的,但是不能被其他线程访问到,这样就保持了数据的线程独立性。而熟知的全局变量,是所有线程都可以访问的,这样就不可避免需要锁来控制,增加了控制成本和代码复杂度。线程局部存储是某些操作系统为线程单独提供的私有空间,但通常只具有很有限的容量。
- 寄存器(包括PC寄存器),寄存器是执行流的基本数据,因此为线程 私有。
共享资源:
- 全局变量
- 堆上的数据
- 函数里的静态变量
- 程序代码,任何线程都有权利读取并执行任何代码
- 打开的文件,A线程打开的文件可以由B线程读写
私有共享如图: