8.muduo学习笔记之base_CurrentThread.{h&cc}

本文详细解析了一个专门用于线程和异常处理的命名空间,介绍了其核心功能,包括线程ID缓存、线程名称存储及函数栈信息获取等。探讨了为何将这些功能独立于线程类之外,并解释了线程局部存储变量的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 说明

  • 这是一个命名空间,不是类
  • 主要是线程类和异常类中需要用到这个命名空间,异常类需要stackTrace()看函数栈信息,线程类需要其他的一些功能
  • 不明白为什么特意分个命名空间,不懂为啥不把这些需要的直接写到线程类中

2. 变量说明

  • 以下所有变量都是__thread修饰的,这样的变量是线程局部存储的,也就是说每个线程都有个独立的变量
  1. t_cachedTid
    • 线程真实pid缓存
    • 如果每次都调用getpid()获得pid,效率较低
  2. t_tidString
    • 这是tid的字符串表示形式
  3. t_tidStringLength
    • 如名,长度
  4. t_threadName
    • 如名,名字

3. 函数说明

1. 内联

  1. tid()
    • 如过是第一次调用,调用cacheTid(),再调用detail::gettid(),再调用系统的SYS_gettid,获得线程tid赋值给t_cacheTid,也就是获得当前线程id并缓存
    • 返回t_cacheTid的值
  2. tidString()
    • 返回t_tidString
  3. tidStringLength()
    • 返回t_tidStringLength
  4. name()
    • 返回t_threadName

2. 普通

  1. cacheTid()
    • 在Thread.cc中实现,主要是调用了gettid,给t_cacheTid和t_tidString,t_tidStringLength赋值
  2. isMainThread()
    • 判断是否是主线程
  3. sleepUsec(int64_t)
    • 睡眠
  4. stackTrace(bool)
    • 异常类中使用,主要是返回函数栈信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值