1.静态变量不管是全局的还是局部的,都被线程共享,因为它们位于进程的数据内存空间(这一点在形式上类似于类的静态数据成员)。
2.而在函数中的自动变量总是局部的,因为它们占据堆栈空间,而每个线程都有它自己的堆栈,所以对每个线程而言,它们是独立的。(外加一句932页内容:静态变量是所有线程共享的。另外还有一种情况TLS,后续会讲到)
3.为了帮助协调线程活动,操作系统需要各种形式的同步。其中有一种叫信号灯(Semaphore),能让程序员在代码的某一特定点上,暂停线程的执行直到另一个线程发信号让它继续。
4.跟信号灯相似的还有临界区(Critical Section),它们指的是不能被中断的代码段。
5.一些变量可能要被调整为全局变量,例如《Windows程序设计》第930页的RNDRCTMT程序将将以下变量作为了全局变量:
HWND hwnd ; int cxClient, cyClient ;