C++ 跨平台的 GetCurrentThreadId() 获取当前线程ID实现

news/2025/2/27 1:38:58

支持:C++11 及早前标准库版本,而无需使用:std::this_thread::get_id()。

支持:NDK/ANDROID、Windows、Linux、MacOS X 等多个操作系统平台。

    int64_t GetCurrentThreadId() noexcept {
#if defined(_WIN32) || defined(_WIN64)
        return ::GetCurrentThreadId();
#else
        // https://android.googlesource.com/platform/bionic/+/master/libc/bionic/gettid.cpp
        // ::gettid();
#if defined(SYS_gettid)
        return syscall(SYS_gettid); /* syscall(__NR_gettid) or syscall(SYS_gettid); */
#elif defined(__NR_gettid) || defined(_ANDROID)
        return syscall(__NR_gettid);
#else
        /* https://elliotth.blogspot.com/2012/04/gettid-on-mac-os.html */
        uint64_t tid;
        pthread_threadid_np(NULL, &tid);
  
        return static_cast<int64_t>(tid);
#endif
#endif
    }


http://www.niftyadmin.cn/n/5869355.html

相关文章

C++复习专题——泛型编程(模版),包括模版的全特化和偏特化

1.泛型编程 在未接触模版前&#xff0c;如果我们想实现一个通用的交换函数&#xff0c;那么我们可以通过函数重载来实现 void Swap(int &x,int &y) {int z x;x y;y z; } void Swap(float &x,float &y) {int z x;x y;y z; } void Swap(double &x,dou…

全面容器监控:构建高效稳定的K8s监控体系

随着云计算的发展&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;因其卓越的功能&#xff0c;已然成为部署及管理容器化工作的首选“容器编排平台”。同时&#xff0c;由于其架构的高复杂和高动态特性&#xff0c;对K8s的监控和运维工作提出了更高的要求。 北京智和信通…

【嵌入式】STM32内部NOR Flash磨损平衡与掉电保护总结

1. NOR Flash与NAND Flash 先deepseek看结论&#xff1a; 特性Nor FlashNAND Flash读取速度快&#xff08;支持随机访问&#xff0c;直接执行代码&#xff09;较慢&#xff08;需按页顺序读取&#xff09;写入/擦除速度慢&#xff08;擦除需5秒&#xff0c;写入需逐字节操作&…

Android 8.0 (API 26) 对广播机制做了哪些变化

大部分隐式广播无法通过静态注册接收&#xff0c;除了以下白名单广播&#xff1a; ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换&#xff1a; cl…

【AI+智造】基于DeepSeek的船舶海工设备多维度数据分析技术方案——以南通船舶制造企业为例

作者&#xff1a;Odoo技术开发/资深信息化负责人 日期&#xff1a;2025年2月25日 以下技术方案基于南通市制造业特点&#xff0c;结合船舶海工行业实际应用场景&#xff0c;针对设备数据量化分析需求展开论述。全文以技术可行性、行业适配性及实施路径为核心&#xff0c;深度整…

H3C商场无线零售解决方案技术资料汇总集

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet 前言 由于内容较多&#xff0c;且不便于排版&#xff0c;为避免资源失效&#xff0c;请用手机点击链接进行保存&#xff0c;若链接生效请及时反馈&#xff0c;谢谢~ 正文 链接如下&#xff08;为避免资源失效&#x…

RK3399 Android10双WiFi功能实现

在Android9开始,就支持WiFi并发功能,在官方链接(WLAN STA/AP 并发 | Android Open Source Project)有如下描述: Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能。对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 (sof…

[回顾]从原型链视角解读Vue底层实现Vue VueCompoent VM VC关系

从原型链视角解读VueComponent与Vue关系 原型链 根据,原型链涉及三个关键属性:__proto__是所有对象的私有属性,指向原型链的第一个元素;prototype是函数的属性,实例对象不拥有它;constructor指向构造函数。提到原型链是JS中实现继承的机制,通过属性链式查找属性,直到…