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: [EMAIL PROTECTED] (pref) | Snail: PO Box 370 [EMAIL PROTECTED] (alt) | Belconnen ACT 2616 Web: http://www.andymac.org/ | Australia -- http://mail.python.org/mailman/listinfo/python-list