静态非成员变量,它对程序中的所有线程都是相同的变量吗
static non-member variable, will it be the same variable to all threads in the program?
我对让一个静态成员扰乱我的头不感兴趣,因为它只供cpp主体中的自由函数使用。如果我在这里声明一个静态变量,它会像静态成员一样只占用一个地址吗?
抱歉,C++中静态的大量使用让我很不确定。
我的思路是:
static Osp::Base::Runtime::Monitor sharedMonitor;
是。如果您在命名空间范围内定义了一个静态变量,那么该变量有一个实例,可以在定义该变量的转换单元中访问。
首先,单词"static"在C++中有两个含义:它可以指关键字static
它被使用),或者它可以指变量的生存期:all在命名空间中定义的变量具有静态生存期。
根据你所说的,我认为你正在寻找一个具有静态的变量寿命,在单个翻译单元之外是不可见的它出现的地方。执行此操作的首选方法是定义未命名命名空间中的变量:
namespace {
int myWhatever; // No keyword static...
}
声明为static
的类成员变量也具有静态生存期,以及声明的局部变量(函数内部)static
。
在翻译单位,但没有其他地方。它有一个实例在项目开始时产生,并持续程序运行。如果它有构造函数,则该构造函数将在main
之前调用(或者在加载动态对象时,如果是动态的使用链接),并且它的析构函数将在exit
被调用(或者在卸载动态对象时,如果是动态链接使用)。
关于线程,C++11有一个存储类说明符thread_local
:使用此说明符声明的变量有一个实例每个线程,其寿命相当于线它将在首次使用前进行初始化(构造),并且线程退出时销毁。这与静止的
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 类与私有变量的其他类之间的线程安全性
- 全局变量 多读取器 一个写入器多线程安全?
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 成员变量在多线程 C++ 时自行更改
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 多个线程可以安全地同时将相同的值写入同一变量吗?
- C++11:具有互斥锁的线程看到原子变量的值发生变化,尽管这是唯一可以改变它的代码
- C++线程不检测全局变量更改
- 为什么 beginthreadex 线程参数变量在父线程中没有更新
- C++多线程程序:变量定义为类成员的隔离错误
- std::线程不是全局变量,但在到达创建它的函数的末尾时不会超出范围?
- 对全局变量的多线程访问:我应该使用互斥锁吗?
- 子线程中的条件变量等待停止主线程中的执行
- 是局部unordered_map变量线程在C 中安全的线程
- 如何使类静态变量线程安全
- 命名空间中的全局变量 - 线程中的值不同
- 静态变量与堆栈变量:线程安全与堆栈大小
- 共享提升::shared_ptr<>变量线程安全吗?
- 在析构函数中pthead_join()类成员变量线程是否明智?