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

posted @ 2023-05-04 10:43  DavidJIAN  阅读(25)  评论(0)    收藏  举报