这是我的代码:
vector<MyClass> objs;
objs.resize(4);
vector<thread> multi_threads;
multi_threads.resize(4);
for(int i = 0; i < 4; i++)
{
multi_threads[i] = std::thread(&MyFunction, &objs[i]);
// each thread change some member variable in objs[i]
multi_threads[i].join();
}
我希望objs
可以在每个线程中更改元素。然后在线程完成后,我可以访问成员数据。
但是,当程序完成上述循环时,我想获取的成员变量根本没有改变。
我猜这是因为 C++ 中的多线程机制,但我不知道我到底做错了什么。我可以知道如何实现我的期望吗?
非常感谢。
==================================================== ================================ 编辑:
这里是源代码MyFunc
:
void MyFunc(MyClass &obj)
{
vector<thread> myf_threads;
myf_threads.resize(10);
for(int i = 0; i < 10; i++)
{
myf_threads[i] = std::thread(&AnotherClass::increaseData, &obj);
myf_threads[i].join();
}
}
这是AnotherClass::increaseData
:
void AnotherClass::increaseData(Myclass& obj)
{
obj.add();
}
void MyClass::add()
{
data++;
}