| | #ifndef Py_INTERNAL_GIL_H |
| | #define Py_INTERNAL_GIL_H |
| | #ifdef __cplusplus |
| | extern "C" { |
| | #endif |
| |
|
| | #ifndef Py_BUILD_CORE |
| | # error "this header requires Py_BUILD_CORE define" |
| | #endif |
| |
|
| | #include "pycore_atomic.h" |
| | #include "pycore_condvar.h" |
| |
|
| | #ifndef Py_HAVE_CONDVAR |
| | # error You need either a POSIX-compatible or a Windows system! |
| | #endif |
| |
|
| | |
| | |
| | #undef FORCE_SWITCHING |
| | #define FORCE_SWITCHING |
| |
|
| | struct _gil_runtime_state { |
| | |
| | unsigned long interval; |
| | |
| | |
| | _Py_atomic_address last_holder; |
| | |
| | |
| | _Py_atomic_int locked; |
| | |
| | unsigned long switch_number; |
| | |
| | |
| | |
| | PyCOND_T cond; |
| | PyMUTEX_T mutex; |
| | #ifdef FORCE_SWITCHING |
| | |
| | |
| | PyCOND_T switch_cond; |
| | PyMUTEX_T switch_mutex; |
| | #endif |
| | }; |
| |
|
| | #ifdef __cplusplus |
| | } |
| | #endif |
| | #endif |
| |
|