当前位置: 首页 > news >正文

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

支持: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.lryc.cn/news/543590.html

相关文章:

  • 钉钉MAKE AI生态大会思考
  • SQL笔记#复杂查询
  • 【Linux】基于UDP/TCP套接字编程与守护进程
  • springboot 引入前端
  • RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务缺失的原因与解决方案
  • 算法系列之回溯算法
  • Uniapp 小程序接口封装与使用
  • Harmony开发笔记(未完成)
  • 观成科技:海莲花“PerfSpyRAT”木马加密通信分析
  • Spring Boot @Async 注解深度指南
  • windows设置暂停更新时长
  • Orange 开源项目 - 集成百度智能云-千帆大模型
  • 特斯拉 FSD 算法深度剖析:软件层面全解读
  • 2025/2/17--2/23学习笔记(week1)_C语言
  • 数据结构:二叉树的数组结构以及堆的实现详解
  • AWS S3 如何设置公开访问权限?
  • 使用TortoiseGit配合BeyondCompare实现在Git仓库中比对二进制文件
  • 8、HTTP/1.0和HTTP/1.1的区别【高频】
  • Rk3568驱动开发_开发环境的搭建_1
  • Solr中得Core和Collection的作用和关系
  • Visual Studio Code 远程开发方法
  • 如何看到 git 上打 tag 的时间
  • 【HarmonyOS Next】鸿蒙TaskPool和Worker详解 (一)
  • 如何设置HTTPOnly和Secure Cookie标志?
  • 几个api
  • Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问
  • 基于 DeepSeek+AutoGen 的智能体协作系统
  • 博客系统笔记总结 2( Linux 相关)
  • 计算机毕业设计SpringBoot+Vue.js电影评论网站系统(源码+文档+PPT+讲解)
  • 精美登录注册UI,登录页面设计模板