静态变量(static)

news/2024/12/23 13:48:30/

静态变量(static)

  • 静态全局变量
  • 静态局部变量
  • 静态成员变量

  • C++ 中,static 关键字可用于不同类型的变量:静态全局变量、静态局部变量和静态成员变量
  • 多线程下,静态全局变量、静态局部变量和静态成员变量无论初始化是否安全,访问和修改变量时都需要使用互斥锁或其他同步机制保护
  • 静态全局变量和静态局部变量初始化过程是线程安全的
  • 静态局部变量在C++11 及以后标准初始化是线程安全的,之前不安全

静态全局变量

  • 静态全局变量:使用 static 关键字修饰的全局变量
  • 生命周期:从程序开始到程序结束
  • 初始化:在 main 函数之前初始化,初始化过程是线程安全的,如果没有显式初始化,其值取决于数据类型和编译器的行为
  • 作用域:仅限于声明文件内部,不能被其他文件访问
  • 共享性:多个函数可以直接共享这个静态全局变量,不需要通过函数参数传递
  • 注意:虽然初始化过程是线程安全的,但在多线程中同时访问和修改变量时存在数据竞争或未定义行为。因此,在多线程中需要使用互斥锁或其他同步机制保护
#include <vector>
#include <thread>
static int counter = 0;  // 全局静态变量    在所有 CStaticLocalVariable 类的实例之间共享
//static std::atomic<int> counter = 0;      //原子操作同步
class CStaticGlobalVariable
{
public:void ParallelAddition(){std::vector<std::thread> vecThread(10);for 

http://www.ppmy.cn/news/1557478.html

相关文章

macOS 显示或不显示隐藏文件

在 macOS 中&#xff0c;可以通过以下方法设置是否显示隐藏文件&#xff1a; 使用快捷键临时切换显示隐藏文件 打开 Finder。按下快捷键 Command Shift . &#xff08;点号键&#xff09;。 这会立即切换显示/隐藏隐藏文件的状态。 使用终端永久设置 打开 终端&#xff…

【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区

&#x1f5fa;️博客地图 &#x1f4cd;方法一、timedatectl 命令 &#x1f4cd;方法二、手动链接 /etc/localtime &#x1f4cd;方法三、修改时区变量 在 Linux 系统中&#xff0c;可以通过以下3种方式将系统时区修改为 CST&#xff08;中国标准时间&#xff0c;GMT8 或称 …

verge下最节省gas的智能合约写法

改什么 把map改成array 比如我们现在有三种优先队列的实现. 当前mainet下最节省gas library HeapMapping {using SafeCast for *;struct Uint256Heap {//键是节点在堆中的位置&#xff08;索引&#xff09;//值是该位置的父节点的索引。//通过这个映射&#xff0c;可以快速…

如何彻底删除电脑数据以防止隐私泄露

在数字化时代&#xff0c;个人隐私和数据安全成为了人们日益关注的问题。当我们需要处理不再需要的电脑数据时&#xff0c;如何确保这些数据被彻底删除&#xff0c;以防止隐私泄露&#xff0c;成为了一个重要的课题。本文将详细介绍几种彻底删除电脑数据的方法&#xff0c;并给…

工业大数据分析算法实战-day12

文章目录 day12时序分解STL&#xff08;季节性趋势分解法&#xff09;奇异谱分析&#xff08;SSA&#xff09;经验模态分解&#xff08;EMD&#xff09; 时序分割ChangpointTreeSplitAutoplait有价值的辅助 时序再表征 day12 今天是第12天&#xff0c;昨天主要是针对信号处理算…

c++数据结构算法复习基础--12--排序算法-常见笔试面试问题

1、STL里sort算法用的是什么排序算法? 快速排序算法。 插入排序(待排序序列个数<32时,系统默认32)。 递归层数太深,转成堆排序。 #include<algorithm> //算法库,头文件使用了快速排序: sort原码: 小到大 _EXPORT_STD template <class _RanIt> _CON…

计算机网络基础图解

注&#xff1a;本文为来自 猿小许 的 “计算机网络” 相关系列文章合辑。 一、计算机网络概述 猿小许于 2021-06-03 18:39:47 发布 一、计算机网络的概念 1.1 计算机网络 概念 计算机网络&#xff1a; 是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与…

Java入门2-idea 第五章:IO流(java.io包中)

一、理解 1. 简单而言&#xff1a;流就是内存与存储设备之间传输数据的通道、管道。 2. 分类&#xff1a; (1) 按方向 ( 以 JVM 虚拟机为参照物 ) 【重点】 输入流&#xff1a;将< 存储设备 > 中的内容读入到 < 内存 > 中。 输出流&#xff1a;将< 内存 …