文档章节

c++多线程锁 Mutex  自动判断死锁

青黑
 青黑
发布于 09/19 23:09
字数 169
阅读 8
收藏 0

c++多线程锁可以使用absl::Mutex  std::mutex这两种,下面是demo代码

使用absl:Mutex的时候打印:

[mutex.cc : 1338] RAW: Cycle: 
[mutex.cc : 1352] RAW: mutex@0x683b68 stack: 
    @ 0x438562 absl::DebugOnlyDeadlockCheck()
    @ 0x4387b2 absl::Mutex::Lock()
    @ 0x4353d0 runThread2()
    @ 0x7f12851c5184 start_thread

[mutex.cc : 1352] RAW: mutex@0x683b70 stack: 
    @ 0x438562 absl::DebugOnlyDeadlockCheck()
    @ 0x4387b2 absl::Mutex::Lock()
    @ 0x4352e2 runThread1()
    @ 0x7f12851c5184 start_thread

[mutex.cc : 1357] RAW: dying due to potential deadlock

 

可以看到谷歌的锁代码有自动检查死锁功能,非常强悍。

 std::mutex的锁直接死锁无任何提示。

 

 

© 著作权归作者所有

共有 人打赏支持
青黑
粉丝 0
博文 13
码字总数 7288
作品 0
岳阳
加载中

评论(1)

jason-he
jason-he
这个还是挺智能的
C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的互斥量Mutex,于是花了一些时间进行了调研。(结果对C++标准库很是绝望....)最终还是通过利用了Boost库的shared_mute...

LeeHappen
10/06
0
0
C++11 std::unique_lock与std::lock_guard的区别及多线程应用实例

C++11std::uniquelock与std::lockguard的区别及多线程应用实例 C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为...

moki_oschina
04/10
0
0
c++的boost库多线程(Thread)编程(线程操作,互斥体mutex,条件变量)详解

c++的boost库多线程(Thread)编程(线程操作,互斥体mutex,条件变量)详解 Boost是由C++标准委员会类库工作组成员发起,致力于为C++开发新的类库的组织。许多C++专家都投身于Boost线程库的开发中...

小星星程序员
2014/05/11
0
0
C++11中once_flag,call_once实现分析

本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。 在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅...

横云断岭
2014/06/22
0
0
mingw无法编译多线程程序的问题及解决

在linux环境下,用gedit+gcc方式学习一段时间的c语言,发现自己越来越佩服linux的牛人了。 居然不用IDE也能开发代码。我做不到,所以有回到了windows的怀抱。 mingw是windows版本的gnu c/c++...

mfcai
2013/03/04
0
2

没有更多内容

加载失败,请刷新页面

加载更多

帧动画(wifi信号动态动画)

准备六张wifi不同信号强度的素材图片,复制到drawable目录中 在drawable目录中新建frame文件,并编写代码 <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> ...

lanyu96
24分钟前
1
0
快速get到学习Linux操作系统的点

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件、网络协议和应用程序。它支持32位...

问题终结者
32分钟前
1
0
Django2 model操作数据库

1.将应用(如learn)添加到安装应用配置中 将我们新建的应用(learn)添加到 settings.py 中的 INSTALLED_APPS中,告诉Django有这么一个应用。 INSTALLED_APPS = [ 'django.contrib.ad...

MichaelShu
34分钟前
1
0
SpringBoot基础篇Bean之条件注入之注解使用

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 bean的条件注入,除了前面一篇博文中介绍的通过@Conditional注解配合Condition接口的实现之外,还提供了更多简化的注解使用方式,省略了自己...

小灰灰Blog
45分钟前
1
0
git clone 报错 Clone failed: Authentication failed for

新装了系统,git和phpstorm的配置全都没有了,重新安装了git和phpstorm 系统:windows10 代码托管平台:阿里云code 软件的安装不作赘述。 报错1 Could not read from remote repository 解决...

Marhal
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部