Skip to main content

pyo3_ffi/cpython/
lock.rs

1#[cfg(Py_3_14)]
2use std::os::raw::c_int;
3use std::sync::atomic::AtomicU8;
4
5#[repr(transparent)]
6#[derive(Debug)]
7pub struct PyMutex {
8    pub(crate) _bits: AtomicU8,
9}
10
11// we don't impl Default because PyO3's safe wrappers don't need it
12#[allow(clippy::new_without_default)]
13impl PyMutex {
14    pub const fn new() -> PyMutex {
15        PyMutex {
16            _bits: AtomicU8::new(0),
17        }
18    }
19}
20
21extern_libpython! {
22    pub fn PyMutex_Lock(m: *mut PyMutex);
23    pub fn PyMutex_Unlock(m: *mut PyMutex);
24    #[cfg(Py_3_14)]
25    pub fn PyMutex_IsLocked(m: *mut PyMutex) -> c_int;
26}
⚠️ Internal Docs ⚠️ Not Public API 👉 Official Docs Here