C++互斥量、lock_guard类模板及死锁实例分析(C++,开发技术)

时间:2024-05-02 19:05:39 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    C%2B%2B%E4%BA%92%E6%96%A5%E9%87%8F%E3%80%81lock_guard%E7%B1%BB%E6%A8%A1%E6%9D%BF%E5%8F%8A%E6%AD%BB%E9%94%81%E5%AE%9E%E4%BE%8B%E5%88%86%E6%9E%90

互斥量是个类对象,理解成一把锁,多个线程尝试使用lock()成员函数来枷锁这个锁,是有一个线程可以锁成功,成功的标志是返回

如果没有锁成功,那么流程卡在lock这里不断尝试去锁

为什么此处只有一句 lock_guard sbguard(my_mutex);函数即可 不出问题

lock_guard原理:

lock_guard创建 sbguard(my_mutex);对象,会有构造函数,在构造函数中进行了my_mutex.lock

在函数执行结束后,局部对象会释放,执行析构函数的时候会执行my_mutex.unlock

死锁的条件:

两个线程同时 锁住 两把锁, A线程先锁 锁1,后锁 锁2;B线程先锁 锁2,后锁 锁1,就会发生死锁

防止死锁的条件:

两个锁的 锁的顺序必须相同

lock(mutex1, mutex2);

lock_guard sbguard1(my_mutex1,adopt_lock);’

本文:C++互斥量、lock_guard类模板及死锁实例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python中tkinter实现定时关机的方法下一篇:

22 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18