Replace pthread_self
with pthread_threadid_np
on macOS
#33
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes the implementation of
fn get_current_tid()
on macOS.The previous used
pthread_self()
returns an opaque typepthread_t
with a large value. Instead,pthread_threadid_np
returns a system-wide unique integral ID of thread in the location specified bythread_id
.Note that
pthread_threadid_np
doesn't seem to exist before macOS 10.6 as mentioned from C++ spdlog comment, we can usepthread_mach_thread_np(pthread_self())
for earlier versions. But considering it's a fairly early version (wikipedia says its initial release date is August 28, 2009), I don't have a condition to test it. So ignoring this for now until a user reports it.I ran the 3 ways of getting TID on macOS from GitHub Action and this is results:
Obviously,
pthread_self
returns a large value that doesn't quite match our perception of common TID.pthread_threadid_np
andpthread_mach_thread_np
both look good, but semantically I prefer the former, whose function name implies what we're doing.Other projects also use
pthread_threadid_np
to get TID on macOS:LLVM compiler-rt
C++ spdlog