mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
gh-112175: Add eval_breaker
to PyThreadState
(#115194)
This change adds an `eval_breaker` field to `PyThreadState`. The primary motivation is for performance in free-threaded builds: with thread-local eval breakers, we can stop a specific thread (e.g., for an async exception) without interrupting other threads. The source of truth for the global instrumentation version is stored in the `instrumentation_version` field in PyInterpreterState. Threads usually read the version from their local `eval_breaker`, where it continues to be colocated with the eval breaker bits.
This commit is contained in:
parent
e71468ba4f
commit
0749244d13
19 changed files with 265 additions and 172 deletions
|
@ -663,6 +663,7 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
|
|||
if (tstate == NULL) {
|
||||
return _PyStatus_ERR("can't make first thread");
|
||||
}
|
||||
runtime->main_tstate = tstate;
|
||||
_PyThreadState_Bind(tstate);
|
||||
|
||||
init_interp_create_gil(tstate, config.gil);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue