我有兩個線程。線程1以特定的時間間隔遞增其自己的一個變量(consumenum)。同時,我有thread2,它也增加了thread1的一個變量(iter-> second-> producenum)。當我在兩個線程中增加這些變量時,是否需要對這些變量進行互斥保護?C++地圖線程同步
線程1:
mutex1->lock();
std::map<uint32_t, myframe>::iterator it2 = mymap.find(consumenum);
mylocalframe = it2->second;
mymap.erase (it2);
mutex1->unlock();
consumenum++;
mutex2->lock();
pktctr--;
mutex2->unlock();
線程2:
std::map<int, Thread1 *>::iterator iter = mythreads.find(id);
iter->second->mutex1->lock();
iter->second->mymap.insert(std::pair<uint32_t,myframe>(iter->second->producenum, myframeval));
iter->second->mutex1->unlock();
iter->second->producenum++;
iter->second->mutex2->lock();
iter->second->pktctr++;
iter->second->mutex2->unlock();
恐怕根據給出的信息唯一合理的答案是「它取決於」。 – NPE
地圖功能如何?你不能遞增地圖,所以我認爲'var1'和'var2'是標量? – NPE
向我們展示一些代碼,否則它太含糊。 – billz