mirror of
https://github.com/python/cpython.git
synced 2025-08-24 02:35:59 +00:00
gh-116738: Make _codecs
module thread-safe (#117530)
The module itself is a thin wrapper around calls to functions in `Python/codecs.c`, so that's where the meaningful changes happened: - Move codecs-related state that lives on `PyInterpreterState` to a struct declared in `pycore_codecs.h`. - In free-threaded builds, add a mutex to `codecs_state` to synchronize operations on `search_path`. Because `search_path_mutex` is used as a normal mutex and not a critical section, we must be extremely careful with operations called while holding it. - The codec registry is explicitly initialized as part of `_PyUnicode_InitEncodings` to simplify thread-safety.
This commit is contained in:
parent
4e2caf2aa0
commit
f8290df63f
6 changed files with 120 additions and 79 deletions
|
@ -15441,7 +15441,11 @@ init_fs_encoding(PyThreadState *tstate)
|
|||
PyStatus
|
||||
_PyUnicode_InitEncodings(PyThreadState *tstate)
|
||||
{
|
||||
PyStatus status = init_fs_encoding(tstate);
|
||||
PyStatus status = _PyCodec_InitRegistry(tstate->interp);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
status = init_fs_encoding(tstate);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue