Re: Python Threads and C Semaphores
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
Re: Python Threads and C Semaphores
Jeremy said the following on 16.1.2007 8:27: > Hello, > > 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 -- Dejan Rodiger - PGP ID 0xAC8722DC Delete wirus from e-mail address -- http://mail.python.org/mailman/listinfo/python-list
Python Threads and C Semaphores
Hello, 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? Thank you, Jeremy -- http://mail.python.org/mailman/listinfo/python-list