Bootstrap

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
    }

;