c++ - 在 while(1) 循环中 boost 互斥锁的scoped_lock

标签 c++ boost boost-interprocess

我有两个进程共享一个队列,该队列通过互斥锁和条件进行同步。我的一个进程中有以下代码。

named_mutex mutex(open_only, "MyMutex");

int main()
{
   while(1)
   {
      scoped_lock <named_mutex> lock(mutex)
      //do some processing 
   }
}

我的问题是互斥量是否在 while 循环中的所有调用中具有作用域,或者是否需要在每次 while 循环启动时获取?互斥锁的解锁范围是多少?似乎每次在 while 循环结束时互斥锁都会被解锁。

谢谢

最佳答案

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

关于c++ - 在 while(1) 循环中 boost 互斥锁的scoped_lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17729606/

相关文章:

c++ - 为什么 std::function<boost::any ()> 在这种情况下不起作用?

c++ - 将 boost::container::boost basic_string 转换为 std::string

c++ - 类外的静态函数

c++ - 用 MPI_Wtime() 替换对 clock() 的调用后立即崩溃

c++ - 通过 linux 命令行执行时可执行文件运行正常 - 通过 c++ system() 命令调用时出现运行时错误

C++ Boost 图库 : outputting custom vertex properties

c++ - “stdx”不是为 ptr_vector 程序显示的 namespace 名称错误

c++ - 提升 IPC 字符串长度段错误?

c++ - Boost.MPI/Boost.Interprocess - 如何检测进程是否在同一台机器上运行?

C++ #include <[filename]> 但#include <string> 不是文件名