作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力学习C++原生多线程技术
我使用的编译器是遵循 C++ 14 的 g++
我使用的开发工具是CodeBlock
我创建了 10 个不同的对象并将它们用作线程的开始
#include <iostream> // std::cout
#include <thread> // std::thread
#include <vector> // std::vector
#include "TestClass.h"
int main ()
{
std::vector<std::thread> threads;
TestClass test[10];
for (int i=1; i<=10; ++i){
threads.push_back(std::thread(&TestClass::run,std::ref(test[i-1])));
}
std::cout << "synchronizing all threads...\n";
for (auto& th : threads) th.join();
for(int i=0;i<10;i++){
std::cout << test[i].Getm_Counter() << std::endl;
}
return 0;
}
跟帖内容如下
#ifndef TESTCLASS_H
#define TESTCLASS_H
class TestClass
{
public:
TestClass();
virtual ~TestClass();
unsigned int Getm_Counter() { return m_Counter; }
void run();
protected:
private:
unsigned int m_Counter;
};
#endif // TESTCLASS_H
实现如下
#include "TestClass.h"
TestClass::TestClass()
{
//ctor
}
TestClass::~TestClass()
{
//dtor
}
void TestClass::run(){
for(int i=0;i<10;i++){
m_Counter++;
}
}
我希望每个对象的计数是 10,但结果不是这样的。为什么? enter image description here
最佳答案
您没有初始化 m_Counter(为 0 或任何其他值)。因此,在您运行结束时,可以对它的值进行任何预期(取决于它可能采用的垃圾值)。
关于c++ - C++的不同对象在线程中会互相干扰吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55219099/
我遇到的问题不是紧急情况,但我不知道该怎么做。我有两个 aspx 网络表单页面。每个都有一个下拉列表。两者都由来自 sql server 的相同数据源填充。问题是,如果我在第 1 页选择一个值,然后转
我正在使用 OpenvSwitch-2.5.2 在两个虚拟机上设置第 2 层网络,如上图所示。 在阅读了 ovs 官方教程和其他一些文章后,我在每个虚拟机上尝试了以下命令: # on vm1 ip l
我是一名优秀的程序员,十分优秀!