如果我有一个类,其唯一目的是拥有全局static
实例(以确保其构造函数中的代码在之前运行main
)并且它使用类static
变量,是否需要通过互斥锁来保护对该变量的访问?
一个例子会有所帮助:
class WinSock
{
public:
WinSock()
{
if(!(inst++))
//winsock init
}
~WinSock()
{
if(!--inst)
//winsock deactivate
}
private:
static int inst = 0;
}
static WinSock unusedWinSockVar;
所有这些都在使用 winsock 的任何文件包含的标头中。是否inst
需要保护对访问的访问,或者是否不可能从多个线程运行此代码,因为线程只会在main
运行一次时创建并在返回之前被销毁main
?