为什么lock_guard是一个模板?

roi*_*mon 2 c++ concurrency mutex

我刚刚了解到std::lock_guard,我想知道为什么它是一个模板。
到目前为止我只见过尖括号内的std::lock_guard<std::mutex>with 。std::mutex

woh*_*tad 6

使用std::lock_guard<std::mutex>确实很普遍。但您可以与其他互斥体类型
一起 使用:std::lock_guard

  1. 各种标准互斥体类型,例如:std::recursive_mutex.
  2. 您自己的互斥体类型。您可以使用任何类型,只要它是BasicLockable,即它支持所需的方法:lock(), unlock()

  • 谢谢,这回答了我的问题,我将研究如何定义我自己的互斥体。我会尽快接受答案 (2认同)