From: Martin v. Löwis Date: Sun, 15 Feb 2004 21:01:17 +0000 (+0000) Subject: Patch #893566: Document that tp_dealloc may be called from any thread. X-Git-Tag: v2.4a1~812 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d3f4a1a00a0c40a57a0a6054dd822271d114c557;p=python Patch #893566: Document that tp_dealloc may be called from any thread. --- diff --git a/Doc/api/newtypes.tex b/Doc/api/newtypes.tex index 038cce9280..5b2e6cf787 100644 --- a/Doc/api/newtypes.tex +++ b/Doc/api/newtypes.tex @@ -1389,6 +1389,16 @@ inherited by subtypes. field. \end{cmemberdesc} +Also, note that, in a garbage collected Python, tp_dealloc may be +called from any Python thread, not just the thread which created the +object (if the object becomes part of a refcount cycle, that cycle +might be collected by a garbage collection on any thread). This is +not a problem for Python API calls, since the thread on which +tp_dealloc is called will own the Global Interpreter Lock (GIL). +However, if the object being destroyed in turn destroys objects from +some other C or C++ library, care should be taken to ensure that +destroying those objects on the thread which called tp_dealloc will +not violate any assumptions of the library. \section{Mapping Object Structures \label{mapping-structs}}