C++ 一句代码打印当前线程ID

功能代码:
printf("ThreadID: %d\n", GetCurrentThreadId()); //经测试这个函数速度更快
printf("ThreadID: %d\n", (*(uint32_t*)&std::this_thread::get_id());

我们要获取线程id,那么必然要用到get_id这个函数,那么我们看看这个函数返回的是什么。
在这里插入图片描述
看到了吗, _Thrd_id()其实是一个uint32_t类型的返回值,但是却被转换成了thread::id类型,
那么我们再来看看thread::id这个类里面有什么吧。
在这里插入图片描述.看到了,里面就只有一个成员变量, 那就是类型为uint32_t的_Id, 那么我相信这时候大部分学过C++的同学都知道了吧, 那就是获取类成员地址在类中的偏移量 &类实例+偏移量 = 我们想要的成员地址, 因为thread::id类只有一个成员变量, 那么偏移量就为0, 所以就直接通过&std::this_thread::get_id()就拿到了我们想要的id类成员地址, 这时候再在前面加上*(uint32_t*)通过转指针解引用我们就拿到了想要的线程id, 是不是很简单?
本来之前在网上想看看别人怎么获取线程ID的, 结果一堆输入输出,强转… ,一行代码搞定的事非要
弄个三四行还要用上各种平时不怎么用的类这些, 然后自己看了下thread::id的代码,现在发上来。

另外推荐GetCurrentThreadId()这个函数 可以直接获取当前线程id

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值