代码之家  ›  专栏  ›  技术社区  ›  nhaa123

boost的作用域mutex和winapi的critical部分之间有区别吗?

  •  9
  • nhaa123  · 技术社区  · 15 年前

    在Windows环境中,boost的作用域mutex是使用winapi的关键部分还是其他什么?

    2 回复  |  直到 12 年前
        1
  •  19
  •   Anthony Williams    15 年前

    的当前版本 boost::mutex 既不使用Win32 CRITICAL_SECTION ,也不是win32互斥体。相反,它使用原子操作和Win32事件来阻止等待。

    旧版本(Boost1.34.1及更早版本)是一个包装 关键部分 在Windows上。

    顺便说一下,互斥体本身没有作用域。这个 boost::mutex::scoped_lock 键入,在最新版本中, boost::lock_guard<boost::mutex> boost::unique_lock<boost::mutex> 提供RAII包装器用于锁定互斥锁,以确保您不会忘记解锁互斥锁。

    这个 boost::lock_guard<> boost::unique_lock<> 模板可用于任何类型 lock() unlock() 成员函数,因此如果需要,可以将它们与进程间互斥体一起使用。

        2
  •  2
  •   Jason S    15 年前

    win32的critical_部分只能在 一个过程 .如果需要在进程之间使用某些东西,则需要一个互斥体。Boost没有提到关键部分,所以我假设它使用的是互斥体。

    “scoped”只意味着它有一个包装器 RAII 在特定作用域结束时自动解锁互斥体。