This commit is contained in:
Benjamin Peterson 2014-01-20 00:12:24 -05:00
commit 27b490c713
1 changed files with 10 additions and 4 deletions

View File

@ -1022,12 +1022,18 @@ As we can easily check, our array is sorted now::
1 5 7 33 99
>>>
**Important note for callback functions:**
.. note::
Make sure you keep references to :func:`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.
Make sure you keep references to :func:`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: