[英]boost scoped_lock on mutex in while(1) loop
我有2个进程共享一个由互斥量和条件同步的队列。 我的流程之一中包含以下代码。
named_mutex mutex(open_only, "MyMutex");
int main()
{
while(1)
{
scoped_lock <named_mutex> lock(mutex)
//do some processing
}
}
我的问题是,互斥是否在while循环中的所有调用中都具有作用域,还是每次while循环开始时都需要获取互斥体? 互斥锁解锁的范围是什么? 似乎每次在while循环结束时,互斥体都被解锁。
谢谢
它的行为与循环体内的任何其他局部变量完全相同:它将在每次迭代时创建和销毁。 在这种情况下,它将在每次迭代中锁定和解锁互斥锁一次。
顾名思义, scoped_lock
在创建时(在其ctor中)锁定互斥锁,在删除时(在其dtor中)锁定互斥锁。
由于lock
实例的作用域在while
主体内,因此互斥锁会在创建scoped_lock
时锁定,并在while
循环结束时解锁:应该找到break
或continue
,甚至找到return
语句,或者只是在结束时while
身体到达时,每个循环一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.