Python Threads and C Semaphores
Andrew MacIntyre
andymac at bullseye.apana.org.au
Tue Jan 16 17:15:38 EST 2007
Dejan Rodiger wrote:
> Jeremy said the following on 16.1.2007 8:27:
>
>> I have a fat C++ extension to a Python 2.3.4 program. In all, I count
>> five threads. Of these, two are started in Python using
>> thread.start_new_thread(), and both of these wait on semaphores in the C++
>> extension using sem_wait(). There also are two other Python threads and one
>> thread running wholly in
>> the extension.
>>
>> I notice that when one of the Python threads calls the extension and waits
>> on a semaphore, all but the C++ thread halt even when not waiting on any
>> semaphore. How do we get this working right?
>
> Check the Global Interpreter Lock
More specifically, make sure that any extension code that does not
call Python API functions releases the GIL for the duration.
Look into the Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS macros and the
PyGILState*() API functions (these API functions appeared in Python 2.3).
--
-------------------------------------------------------------------------
Andrew I MacIntyre "These thoughts are mine alone..."
E-mail: andymac at bullseye.apana.org.au (pref) | Snail: PO Box 370
andymac at pcug.org.au (alt) | Belconnen ACT 2616
Web: http://www.andymac.org/ | Australia
More information about the Python-list
mailing list