-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace ReentrantMutex by a futex-based one on Linux. #95727
Merged
Merged
Changes from 1 commit
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
c62c8cb
Add current_thread_unique_ptr() in std::sys_common.
m-ou-se bd61bec
Add futex-based ReentrantMutex on Linux.
m-ou-se ebebe6f
Make current_thread_unique_ptr work during thread destruction.
m-ou-se 319a9b0
Move current_thread_unique_ptr to the only module that uses it.
m-ou-se 43651aa
Initialize thread local with const{}.
m-ou-se 83e8b9e
Add debug asserts to futex ReentrantMutex impl.
m-ou-se 5b25912
Add #[deny(unsafe_op_in_unsafe_fn)] to thread_local!(const).
m-ou-se 8a2c9a9
Allow cvt_nz to be unused on some platforms.
m-ou-se d4e44a6
Add missing unsafe marker.
m-ou-se File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Initialize thread local with const{}.
- Loading branch information
commit 43651aa34fd7762058aea6920d2e401561d97076
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we avoid creating new
thread_local!
? Since pthread keys number available on some platforms is rather small, it would be beneficial for std to use as few pthread keys as possible.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That'd be nice.
I used the address of the THREAD_INFO thread local in an earlier version, to avoid creating a new one, but that one needs Drop, which makes it inaccessible during thread shutdown. We don't have a good way of getting the address of such a thread local's storage after its destructor ran, since its getter function just returns None after destruction.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like
LOCAL_PANIC_COUNT
meets this requirement, but it's a little weird to use it directly. maybe it would be nice to combine theKEYS
of map.rs andLOCAL_PANIC_COUNT
into oneLOCAL_THREAD_STATE
.