考虑以下情况:
这对于类很有效。在这里,我在c'tor中递增并查看值的增加。
但是,我的类中的计数器始终为0。
为什么会发生这种情况?
我尝试了一些替代方法:
那么为什么不同的线程中
- 使用
boost::asio
创建了2个不同的网络端口,每个端口都在自己的线程中运行 - 一个端口用于接收和处理数据 -
class DataConnection
包装在std::thread
中 - 另一个端口用于发送统计信息 -
class StatConnection
也包装在std::thread
中
为了计算连接数(以及其他小数据片段),我的想法是在namespace
内部使用static
变量,如下所示:
#include <atomic>
namespace app {
namespace status {
static std::atomic<long> counter = 0;
}
}
这对于类很有效。在这里,我在c'tor中递增并查看值的增加。
但是,我的类中的计数器始终为0。
为什么会发生这种情况?
我尝试了一些替代方法:
- 将>交换为:没有任何区别。
- 使用没有静态关键字的命名空间。
multiple definition of `app::status::searchtime'
./src/status/Status.o:/[...]/include/status/Status.hpp:16: first defined here
[...]
那么为什么不同的线程中
count
的值会不同呢?