PHP 8.2.30
Preview: lock.h Size: 1.72 KB
//opt/alt/python313/include/python3.13/cpython/lock.h

#ifndef Py_CPYTHON_LOCK_H
#  error "this header file must not be included directly"
#endif

#define _Py_UNLOCKED    0
#define _Py_LOCKED      1

// A mutex that occupies one byte. The lock can be zero initialized to
// represent the unlocked state.
//
// Typical initialization:
//   PyMutex m = (PyMutex){0};
//
// Or initialize as global variables:
//   static PyMutex m;
//
// Typical usage:
//   PyMutex_Lock(&m);
//   ...
//   PyMutex_Unlock(&m);
//
// The contents of the PyMutex are not part of the public API, but are
// described to aid in understanding the implementation and debugging. Only
// the two least significant bits are used. The remaining bits are always zero:
// 0b00: unlocked
// 0b01: locked
// 0b10: unlocked and has parked threads
// 0b11: locked and has parked threads
typedef struct PyMutex {
    uint8_t _bits;  // (private)
} PyMutex;

// exported function for locking the mutex
PyAPI_FUNC(void) PyMutex_Lock(PyMutex *m);

// exported function for unlocking the mutex
PyAPI_FUNC(void) PyMutex_Unlock(PyMutex *m);

// Locks the mutex.
//
// If the mutex is currently locked, the calling thread will be parked until
// the mutex is unlocked. If the current thread holds the GIL, then the GIL
// will be released while the thread is parked.
static inline void
_PyMutex_Lock(PyMutex *m)
{
    uint8_t expected = _Py_UNLOCKED;
    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
        PyMutex_Lock(m);
    }
}
#define PyMutex_Lock _PyMutex_Lock

// Unlocks the mutex.
static inline void
_PyMutex_Unlock(PyMutex *m)
{
    uint8_t expected = _Py_LOCKED;
    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
        PyMutex_Unlock(m);
    }
}
#define PyMutex_Unlock _PyMutex_Unlock

Directory Contents

Dirs: 0 × Files: 59

Name Size Perms Modified Actions
3.32 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.14 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.15 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.05 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.09 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.19 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
14.85 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.07 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
909 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.79 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
5.46 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.56 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
3.78 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
652 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
232 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
900 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.17 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
6.88 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.93 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
725 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
8.00 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.76 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.72 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
5.00 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
5.45 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.17 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.22 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.02 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
7.52 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
18.63 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
3.73 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.28 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
848 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
3.83 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
16.12 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
18.68 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
28.56 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
23.77 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.35 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.38 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.84 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
444 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.90 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.35 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.75 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.78 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
9.24 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
5.31 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
4.23 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.47 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
707 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.00 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
775 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
282 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
823 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
1.30 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
24.49 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
564 B lrw-r--r-- 2025-12-05 16:06:33
Edit Download
2.20 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).