线程可以访进程内存里的所有数据,甚至包括其他线程的堆栈(如果它知道线程的堆栈地址,很少发生),但实际运用中线程也有自己的私有存储空间:
1,栈(尽管并非完全无法被其他线程访问,但一般情况下仍然可以被认为是私有的数据)
2,线程局部存储解(thread local storage)。线程局部存储是某些os为线程单独提供的私有空间,但通常只具有很有限的容量。
3,register(包括pc寄存器),寄存器是执行流的级别数据,为线程私有。
=
从c程序员的绝度来看,数据在线程之间是否私有如下:
线程私有 线程之间共享(进程所有)
局部变量 全局变量
函数的参数 堆上的数据
TLS数据 函数里的静态
程序代码,任何线程都有权利读取并执行任何代码
打开的文件,A线程打开的文件可以由B线程读写
========
线程调度总,线程通常拥有知道三种状态,分别是:
运行:线程正在执行
就绪:此时线程可以立即执行,但是cpu以及被占用
等待:此时线程等在某一事件发生,无法执行。