10-muduo-base-CurrentThread
1 类说明
这个文件没有类,只声明了一个命名空间
::muduo::CurrentThread,里面只有一些函数。作用:获取一些当前线程的信息
2 变量
注意下面这些变量都有__thread修饰。__thread 关键字表示每一个线程有一份独立的实体,每一个线程都不会干扰。__thread 只能修饰POD变量
参考:(221条消息) c/c++ __thread_simsunny22的博客-CSDN博客_static __thread
- t_cachedTid
- 当前线程的tid
- 线程真实pid缓存
- 如果每次都调用getpid()获得pid,效率较低
- t_tidString
- 这是tid的字符串表示形式
- t_tidStringLength
- 这是tid的字符串表示形式的长度
- t_threadName
- 当前线程的名称
C++extern详解 - 骚猪mark - 博客园 (cnblogs.com)
3 函数说明
- cacheTid
- tid
- 先检查t_cachedTid是否为0,如果不是直接返回t_cachedTid
- 如果是,先调用
::syscall(SYS_gettid)设置t_cachedTid的值,再返回
- tidString
- 线程字符串
- tidStringLength
- 返回tid的字符串表示形式的长度
- name
- 返回线程名称
- isMainThread
- 判断当前线程是否为主线程
- 判断依据:在Linux,如果
getpid()返回与gettid()相同的结果,则是主线程
- sleepUsec
- 相当于sleep函数,用于测试
- stackTrace
- 返回函数栈信息字符串(string),在Exception类中使用
注意点:由于CurrentThread.h在其他地方被多次引入。所以以上几个变量只能在头文件声明(要加上extern关键字),而在源文件定义。否则会报重复定义。以下面的例子说明。还有函数也一样,函数定义放在源文件,而声明放在头文件。又或者函数定义放在头文件,但是要加上inline关键字。
参考链接:https://www.cnblogs.com/kwongtai/p/8366907.html
重点看:https://blog.csdn.net/sksukai/article/details/105611870

浙公网安备 33010602011771号