c++变量的作用域跟生命周期

c++变量的作用域和生命周期
今天看了windows程序编程,有一句话很困惑
静态变量不管是全局的还是局部的,都被线程共享,因为它们位于进程的数据内存空间。
让两个或多个线程使用同一个函数,,但是每个线程使用它们自己的静态变量
这个句话让我很难理解。大神能否解释一下。

还有一个就是局部静态变量的问题,它的作用域是函数体内,那它的生命周期是整个文件,既然他只能在函数内用,那生命周期要这么大有什么用?
------解决思路----------------------
局部变量有一定全局特性,只在第一次初始化

void FunA(void)
{
static int a=0;
a=a+1;
}
这样在程序中,只要调用一次FuncA,a的值就会增加1,a的生命周期在函数调用完并不结束,但它依旧只能在FunA中有效。如果没有static关键字,则每次FuncA调用完,a的生命周期就结束,这样每次调用a的值都为1,。
------解决思路----------------------
static修饰的变量都是存储在静态常量区,针对全局静态变量是只是限定了它的作用域,只在本文件,生存周期是程序运行到结束;局部静态变量作用域没有改变,只是改变了生存的周期,和全局一样是开始到结束,而且局部的静态变量只能被初始化一次,也就是说当调用了某个函数,函数中有静态局部变量,那么初始化的值会被保存下来,下一次的初始化不会有效,而是在上一次的基础上进行叠加,这么说你明白了吗;
------解决思路----------------------
线程局部存储吧

其实 C库本来是单线程的
       C库本来是没线程可言的,
       多线程后,
       相对于多线程,这种无线程的就成为单线程的了,
       后来多线程,为了不修改用户代码,
       就把所有库中的全局变量,换成线程局部的了
       C++继承了所有C标准库函数,所以也一并继承了这个特性

------解决思路----------------------
首先作用域 和作用周期是确定一个对象的实时状态的,一个反映在空间特性上,一个反映在时间特性上,都有各自的用处。静态局部变量的作用域是函数内,而作用的周期是整个程序运行时间,也就是说,静态局部变量一旦激活,不管你调用的函数是否结束,一直存在着,只是他的作用范围是限定的。具体有什么用肯定是有用的啦。