add bindings for critical section API #4477
Merged
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.
refs #4265, specifically #4265 (comment), ultimately we want to use this in
GILProtected
andGILOnceCell
.#4439 is an alternate approach that also uses this API for dict iteration (following the suggestion in the docs for
PyDict_Next
). I'm holding off on using this API in that spot because of the discussion in that PR.That PR doesn't use
opaque_struct
on the GIL-enabled build, but I think that's actually the correct thing to do, since it's an opaque struct in the regular ABI:https://github.com/python/cpython/blob/556e8556849cb9df0666629b0f564b5dd203344c/Include/cpython/critical_section.h#L70-L71
I'm not exposing the begin/end critical section macros because they include braces and are not expressible in rust.