首页 > 其他分享 >静态变量(static)

静态变量(static)

时间:2024-12-22 20:02:45浏览次数:8  
标签:初始化 变量 静态 局部变量 static 全局变量

静态变量(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 

标签:初始化,变量,静态,局部变量,static,全局变量
From: https://blog.csdn.net/qq_34552942/article/details/144648225

相关文章

  • 如何在易优CMS中自定义ad标签中的变量名?
    在易优CMS中,如果你希望在ad标签中自定义变量名,可以使用id属性。通过设置id属性,你可以将默认的$field变量名替换为你自定义的变量名。以下是一个具体的示例:{eyou:adaid='37'id='field1'}<ahref="{$field1.links}"{$field1.target}><imgalt="{$field1.title}......
  • 如何在易优CMS中定义并使用自定义变量?
    在易优CMS中,你可以使用assign标签来定义自定义变量,并在其他标签中引用这些变量。以下是一个具体的示例:{eyou:assignname='typeid'value='5'/}{eyou:typetypeid='$typeid'}<ahref="{$field.typeurl}">{$field.typename}</a>{/eyou:type}{eyou:cha......
  • 【工具变量】上市公司企业供应链成本分担数据(2010-2023年)
    一、测算方式:参考C刊《经济管理》刘红霞老师(2024)的做法,从绿色投资企业与供应链其他成员企业关系层面出发,使用两个指标测度供应链成本分担:一是单向供应链成本分担总额(CS_get),是绿色投资企业从供应链其他成员企业获取的成本分担,强调了链上企业对绿色投资企业单向的成本分担水平,使......
  • PyTorch进行汽车油耗多变量线性预测
    数据集AUTOMPGAutoMPG(MilesPerGallon)数据集,它是一个经典的回归问题数据集,常用于机器学习和统计分析。该数据集记录了不同型号汽车的燃油效率(即每加仑燃油行驶的英里数)以及其他多个相关特征。数据集特征:mpg:每加仑燃油行驶的英里数(目标变量)。cylinders:气缸数量,表示发......
  • 静态网页模板源码】000021 灰棕背景网站-响应式 (附源码)
    前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......
  • static修饰成员的特点及static修饰成员变量内存图解-java se进阶 day01
    1.static介绍static是静态的意思,它可以用于修饰成员变量和成员方法2.static的特点1.被static修饰了的成员变量,可以被类中的所有对象所共享虽然stu02没有给school赋值,但是我们用stu02调用时依旧成立,并且打印了南昌交通学院,因为school被共享了,恰好stu01又为其赋值了2.被sta......
  • Linux IPC:互斥锁与条件变量汇总整理
    互斥锁(Mutexes)和条件变量(ConditionVariables)是线程同步中非常重要的概念。它们被广泛应用于多线程编程中,以解决并发访问共享资源的问题。下面将详细介绍互斥锁和条件变量的概念、用途、API以及示例代码。互斥锁(Mutexes)互斥锁是一种用于保护临界区(CriticalSection)的机制......
  • 开发大数据看板时,使用的数据是静态的还是实时渲染的?
    在开发大数据看板时,使用的数据可以是静态的,也可以是实时渲染的,具体取决于看板的需求和设计。以下是对这两种数据使用方式的详细解释:静态数据:静态数据通常是在看板开发过程中预先加载和处理好的数据。这些数据可能来自于各种数据源,如数据库、文件、API等,并经过一系列的数据清......
  • 当大数据看板使用大量静态数据时,如何优化性能?
    当大数据看板使用大量静态数据时,前端开发的性能优化可以从以下几个方面进行:1.减少DOM数量分页或搜索展示:如果后端能够支持分页返回数据,前端可以优先通过后端分页返回数据,前端分页展示数据的方式进行处理,以减少需要渲染的DOM数量。虚拟列表:在前端仅渲染可视区域的内容,避免大量......
  • 数据结构漫游记:静态链表的实现(CPP)
    嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let'sgo!我的博客:yuanManGan我的专栏:C++入门小馆 C......