私は2つのスレッドを持っています。Thread1 は、特定の間隔で独自の変数 (consumenum) の 1 つをインクリメントしています。同時に、スレッド 1 の変数の 1 つをインクリメントするスレッド 2 があります (iter->second->producenum)。これらの変数を両方のスレッドでインクリメントする場合、これらの変数の周りにミューテックス保護が必要ですか?
スレッド 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();