相关疑难解决方法(0)

命名空间中的静态变量与非静态变量

我有一个foo包含整数的命名空间bar,声明如此...

foo.h中:

namespace foo {
    int bar;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我foo.h只包含一个文件,这就可以了.但是当我foo.h从两个或更多文件中包含时出现问题:我收到链接器错误.我想出如果我声明bar为static,我可以包含foo.h在多个文件中.这对我来说似乎很奇怪,因为我不知道可以在命名空间内声明一个静态变量.(那有什么意思?)

为什么这样做?更重要的是,为什么没有它的工作没有 static?static在用于什么时意味着什么namespace?

c++ static namespaces

37
推荐指数
3
解决办法
2万
查看次数

将std :: mutex设为静态会为互斥锁本身创建竞争条件

它可能听起来很虚,但是,有点混乱,我已经经历了这个问题,当我们看到它们在同样的情况下,我必须使我的map静态所以它将是所有实例将是共同的在单独创建的threads,我要同步要去我的地图的行为的功能,所以我想制作的std::mutex是static在我的课像有人提出什么作为给定链路的答案.在这种情况下,会不会有任何竞争条件是为了获取和锁定mutex自己?是否有更好的方法可以同步static map使用的功能mutex

c++ multithreading mutex c++11

6
推荐指数
1
解决办法
1297
查看次数

标签 统计

c++ ×2

c++11 ×1

multithreading ×1

mutex ×1

namespaces ×1

static ×1