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}