std :: mutex锁定函数和std :: lock_guard <std :: mutex>之间的区别?

ash*_*ian 6 multithreading mutex objective-c++ c++11

基本上,标题是不言自明的.我用以下方式使用它:

  • 代码是Objective-C++.
  • Objective-C类对不同的目的函数进行并发调用.
  • 我使用std::mutexlockunlock std::vector<T>跨越整个班级的编辑选项,如C++的std容器不是线程安全的.

Jon*_*ely 14

lock_guard当超出范围时,使用自动解锁互斥锁.这使得在返回时或抛出异常时忘记解锁它是不可能的.您应该总是喜欢使用lock_guardunique_lock代替使用mutex::lock().请参阅http://kayari.org/cxx/antipatterns.html#locking-mutex

lock_guardRAIISBRM类型的示例.