[Python-checkins] cpython (2.7): document that a new Python thread context is created in ctypes callbacks

benjamin.peterson python-checkins at python.org
Mon Jan 20 06:12:36 CET 2014


http://hg.python.org/cpython/rev/9cd2d7a3f9f2
changeset: 88575:9cd2d7a3f9f2
branch: 2.7
parent: 88563:b67ab0a2fbc8
user: Benjamin Peterson <benjamin at python.org>
date: Mon Jan 20 00:09:53 2014 -0500
summary:
 document that a new Python thread context is created in ctypes callbacks (closes #6627)
Patch by Nikolaus Rath.
files:
 Doc/library/ctypes.rst | 8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -1080,12 +1080,18 @@
 1 5 7 33 99
 >>>
 
-**Important note for callback functions:**
+**Important notes for callback functions:**
 
 Make sure you keep references to CFUNCTYPE objects as long as they are used from
 C code. :mod:`ctypes` doesn't, and if you don't, they may be garbage collected,
 crashing your program when a callback is made.
 
+Also, note that if the callback function is called in a thread created outside
+of Python's control (e.g. by the foreign code that calls the callback), ctypes
+creates a new dummy Python thread on every invocation. This behavior is correct
+for most purposes, but it means that values stored with `threading.local` will
+*not* survive across different callbacks, even when those calls are made from
+the same C thread.
 
 .. _ctypes-accessing-values-exported-from-dlls:
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

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