std::lock_guard 与 std::unique_lock 对 mutex 进行自动加解锁。

 

mutex m;
void fun()
{
   unique_lock<mutex> mlock(m);
}
unique_lock mlock(m);
线程没有 m 的所有权,根据块语句的循环实现自动加解锁。
线程根据 m 属性,来判断是否可以加锁、解锁。

 

void fun()
{
   lock_guard<mutex> mlock(m);
}
lock_guard mlock(m);
线程拥有 m 的所有权,实现自动加解锁。
线程读取 m 失败时,则一直等待,直到读取成功。
线程会把 m 一直占有,直到当前线程完成才释放,其它线程才能访问。

 

相关文章:

  • 2022-01-26
  • 2021-12-14
  • 2021-09-30
  • 2022-12-23
  • 2021-10-04
  • 2021-10-16
  • 2022-01-11
猜你喜欢
  • 2021-04-29
  • 2021-12-28
  • 2021-08-25
  • 2021-09-06
  • 2022-01-10
  • 2021-08-21
  • 2022-01-01
相关资源
相似解决方案