我有两个线程。Thread1 正在以一定的间隔递增它自己的变量(consumum)之一。同时,我有thread2,它也增加了thread1的一个变量(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();