使用许多静态成员有问题

Is use of many static members problematic?

本文关键字:有问题 静态成员 许多      更新时间:2023-10-16

在我的C 应用程序中,我有几个类,仅由一些静态成员组成。

其中大多数是双重值或其他基本类型,但是有些是(合理的)大查找表(例如static unordered_map< string, vector< vector< myClassType > > > ...)

变量主要是我在代码中许多不同位置所需的参数和查找表。我不想始终必须交出所有这些参数和表,因此我决定将它们放入不同的类,只是导入类,然后使用变量。

这种方法有什么问题,涉及速度或安全性?在分析过程中,我并没有真正看到任何东西,但是我想知道这是否是"好实践",还是应该以不同的方式处理此问题(我不想使用全球变量,所以我使用了这种方法)。

在使用全球或静态成员之间,您没有完整的更改。

关于安全性,对于静态成员,您一定只有一个实例,在此处http://en.cppreference.com/w/cpp/language/storage_duration(寻找静态零件)

如果多个线程尝试同时初始化相同的静态局部变量,则该初始化恰好发生一次(可以使用std :: call_once的任意函数获得相似的行为)。 注意:此功能的常规实现使用了双检查锁定模式的变体,该变体将已经定位的本地静脉静态的运行时开销降低为单个非原子布尔比较。