muduo源码解析3-currentthread命名空间
2024-08-30 05:55:46
CurrentThread
作用:
CurrentThread并不是一个类,而是一个命名空间,在mymuduo内部,目的是提供对于当前线程的管理操作。
内部变量:
__thread int t_cachedTid; //当前线程ID
__thread char t_tidString[];//当前线程ID ,char*类型
__thread int t_tidStringLength;//char*大小
__thread const char* t_threadName;//当前线程名字
__thread 修饰变量每一个线程有一份独立实体,各个线程的值互不干扰。也就是说,每个线程都独立的拥有这四个变量。
内部函数:
//返回线程ID
inline int tid()
{
//__builtin_expect(EXP, N)。意思是:EXP==N的概率很大。
if(__builtin_expect(t_cachedTid==,))
cacheTid();
return t_cachedTid;
} //返回线程ID,char*类型
inline const char* tidString()
{
return t_tidString;
} //返回char*类型线程ID的大小
inline int tidStringLength()
{
return t_tidStringLength;
}
//返回线程的名字
inline const char* name()
{
return t_threadName;
} bool isMainThread(); void sleepUsec(int64_t usec); //返回线程调用栈信息,
string stackTrace(bool demangle);
stackTrace获取的信息如下
/*
打印信息是这么个玩意儿。stackTrace内部实现没有去深究。
/home/zqc/c_c++Repo/Qtcode/build-mymuduo-Desktop_Qt_5_14_2_GCC_64bit-Debug/mymuduo() [0x401dd6]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f8c8c6d5840]
/home/zqc/c_c++Repo/Qtcode/build-mymuduo-Desktop_Qt_5_14_2_GCC_64bit-Debug/mymuduo() [0x4012e9]
*/
测试:
了解一下__thread声明变量的用法,每个线程都独立拥有一个该变量。
最新文章
- 项目vue2.0仿外卖APP(四)
- 【krpano】加密XML手动解密分析
- C#开源
- PHP 弹出文件下载
- Emacs 之列编辑模式
- php返回json,xml,JSONP等格式的数据
- 从高版本JDK换成低版本JDK报错Unsupported major.minor version 52.0
- javascript学习-原生javascript的小特效(原生javascript实现链式运动)
- windows store app search contract
- supervisor进程管理
- php install extension
- InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。
- C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)
- 计蒜客模拟赛5 D2T1 成绩统计
- Shell命令-文件及目录操作之mkdir、mv
- Python设计模式 - UML - 对象图(Object Diagram)
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- Django formset
- 【367】通过 python 实现 SVM 硬边界 算法
- Idea设置类注释模板
热门文章
- 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知
- PHP imageaffinematrixget - 获取矩阵
- 2019 HL SC day4
- JavaScript动画实例:圆点的衍生
- AutoMapper 9.0的改造(续)
- 银弹谷零代码开发V百科|使用技巧:Vbase技巧二则之二
- VSCode C++环境配置(个人使用)
- Docker-compose实战
- java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用)
- 6、Java 运算符