在while(1)循环中对互斥锁上的scoped_lock进行提升

rud*_*asi 2 c++ boost boost-interprocess

我有2个进程共享一个由互斥和条件同步的队列.我在其中一个进程中有以下代码.

named_mutex mutex(open_only, "MyMutex");

int main()
{
   while(1)
   {
      scoped_lock <named_mutex> lock(mutex)
      //do some processing 
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是互斥锁是否在while循环中的所有调用中都有范围,还是每次while循环启动时都需要获取?互斥锁的范围是什么?似乎每次在while循环结束时互斥锁都会被解锁.

谢谢

Mar*_*k B 8

它的行为与循环体中的任何其他局部变量完全相同:每次迭代将创建和销毁一次.在这种情况下,它将在每次迭代时锁定和解锁互斥锁.