[Python-checkins] bpo-43879: Add native_thread_id field to PyThreadState (GH-25458)

vstinner webhook-mailer at python.org
Wed May 26 10:40:24 EDT 2021


https://github.com/python/cpython/commit/90a6c07cb20114dda801f027a90df839225751cb
commit: 90a6c07cb20114dda801f027a90df839225751cb
branch: main
author: Gabriele N. Tornetta <P403n1x87 at users.noreply.github.com>
committer: vstinner <vstinner at python.org>
date: 2021年05月26日T16:40:14+02:00
summary:
bpo-43879: Add native_thread_id field to PyThreadState (GH-25458)
files:
A Misc/NEWS.d/next/Core and Builtins/2021-04-17-16-08-00.bpo-43879.zkyJgh.rst
M Include/cpython/pystate.h
M Modules/_threadmodule.c
M Python/pystate.c
diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h
index 63ba60074d56c..1049eda3e5160 100644
--- a/Include/cpython/pystate.h
+++ b/Include/cpython/pystate.h
@@ -113,6 +113,12 @@ struct _ts {
 PyObject *async_exc; /* Asynchronous exception to raise */
 unsigned long thread_id; /* Thread id where this tstate was created */
 
+ /* Native thread id where this tstate was created. This will be 0 except on
+ * those platforms that have the notion of native thread id, for which the
+ * macro PY_HAVE_THREAD_NATIVE_ID is then defined.
+ */
+ unsigned long native_thread_id;
+
 int trash_delete_nesting;
 PyObject *trash_delete_later;
 
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-17-16-08-00.bpo-43879.zkyJgh.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-17-16-08-00.bpo-43879.zkyJgh.rst
new file mode 100644
index 0000000000000..98b51736904a0
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-17-16-08-00.bpo-43879.zkyJgh.rst	
@@ -0,0 +1 @@
+Add native_thread_id to PyThreadState. Patch by Gabriele N. Tornetta.
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 6924d6553a1ff..d4d5c0acff867 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -1071,6 +1071,11 @@ thread_run(void *boot_raw)
 
 tstate = boot->tstate;
 tstate->thread_id = PyThread_get_thread_ident();
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ tstate->native_thread_id = PyThread_get_thread_native_id();
+#else
+ tstate->native_thread_id = 0;
+#endif
 _PyThreadState_Init(tstate);
 PyEval_AcquireThread(tstate);
 tstate->interp->num_threads++;
diff --git a/Python/pystate.c b/Python/pystate.c
index 64dcd577a0ffd..4a3cb24a199f1 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -645,6 +645,11 @@ new_threadstate(PyInterpreterState *interp, int init)
 tstate->gilstate_counter = 0;
 tstate->async_exc = NULL;
 tstate->thread_id = PyThread_get_thread_ident();
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ tstate->native_thread_id = PyThread_get_thread_native_id();
+#else
+ tstate->native_thread_id = 0;
+#endif
 
 tstate->dict = NULL;
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /