bpo-39877: _PyRuntimeState.finalizing becomes atomic by vstinner · Pull Request #18816 · python/cpython
Conversation
Convert _PyRuntimeState.finalizing field to an atomic variable:
- Rename it to _finalizing
- Change its type to _Py_atomic_address
- Add _PyRuntimeState_GetFinalizing() and _PyRuntimeState_SetFinalizing()
functions - Remove _Py_CURRENTLY_FINALIZING() function: replace it with testing
directly _PyRuntimeState_GetFinalizing() value
Convert _PyRuntimeState_GetThreadState() to static inline function.
Convert _PyRuntimeState.finalizing field to an atomic variable: * Rename it to _finalizing * Change its type to _Py_atomic_address * Add _PyRuntimeState_GetFinalizing() and _PyRuntimeState_SetFinalizing() functions * Remove _Py_CURRENTLY_FINALIZING() function: replace it with testing directly _PyRuntimeState_GetFinalizing() value Convert _PyRuntimeState_GetThreadState() to static inline function.
This PR prepares the code for PR #18811 which does no longer protect _PyRuntimeState.finalizing with the GIL. See discussion: #18811 (comment)
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, but need to fix that pesky MSVC failure.
|
|
||
| static inline void | ||
| _PyRuntimeState_SetFinalizing(_PyRuntimeState *runtime, PyThreadState *tstate) { | ||
| return _Py_atomic_store_relaxed(&runtime->_finalizing, (uintptr_t)tstate); |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the return is confusing MSVC (see CI failures).
This file contains hidden or 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