C++中静态结构的初始化

Initalization of static structure in C++

本文关键字:初始化 结构 静态 C++      更新时间:2023-10-16

我正在C++中实现一个线程安全的单例类。我需要一种初始化互斥的方法来保护getInstance()方法。

这是一个自包含的共享库,所以我不能使用来自另一个类的互斥,我必须找到一种方法在类内初始化它。

该库必须移植到各种平台,所以让我们考虑互斥是:

static void * OS_mutex;

为了初始化它,你使用

OS_Mutex_Init ( void * mutex);

我试图实现一个嵌套类,在它的构造函数中初始化OS_mutex结构。

但我遇到了一些麻烦,有人知道如何实现我所需要的吗?任何参考资料或链接都将不胜感激。

首先,将其声明为变量:

static MyStruct OS_Mutex;

其中:

struct MyStruct
{
void* pointer;
MyStruct() : pointer(0)
{
// Called on initialization of global variables by the CRT
// You can call here your function OS_Mutex_Init()
// Or you can use lazy initialization (leave the pointer to 0,
// and initialize it only when someone needs it)
}
};

那么,这两个答案可能会对你有所帮助:

  • 加载DLL而不是初始化静态类
  • dll中声明的全局变量会发生什么情况