OK, now I understand a bit more about how python's threads work.  It turns out that the python thread API puts the burden on us to do some of their bookkeeping and track some data on a per-thread basis. Luckily, apr provides a wrapper around pthread_{set,get}specific so that we can do this in a portable way.
OK, now I understand a bit more about how python's threads work.  It
turns out that the python thread API puts the burden on us to do some
of their bookkeeping and track some data on a per-thread basis.
Luckily, apr provides a wrapper around pthread_{set,get}specific so
that we can do this in a portable way.

* swigutil_py.c
  (release_py_lock) Store the PyThreadState in the thread's private
    address space.
  (acquire_py_lock) When re-acquiring the interpreter lock, get the
    PyThreadState from the thread's private address space.

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion