在发布我自己关于内存问题的解决方案后,nusi 建议我的解决方案缺少锁定。
以下伪代码以非常简单的方式模糊地代表了我的解决方案。
std::map<int, MyType1> myMap;
void firstFunctionRunFromThread1()
{
MyType1 mt1;
mt1.Test = "Test 1";
myMap[0] = mt1;
}
void onlyFunctionRunFromThread2()
{
MyType1 &mt1 = myMap[0];
std::cout << mt1.Test << endl; // Prints "Test 1"
mt1.Test = "Test 2";
}
void secondFunctionFromThread1()
{
MyType1 mt1 = myMap[0];
std::cout << mt1.Test << endl; // Prints "Test 2"
}
我完全不确定如何实现锁定,我什至不确定我为什么要这样做(注意实际的解决方案要复杂得多)。有人可以解释一下在这种情况下我应该如何以及为什么要实施锁定?