hello there,

I have written a small standalone Python web server in C using libev.
I want to run it within a Python thread to make it possible to share memory easily.

Unfortunately it seems like the thread that runs the libev mainloop blocks any other Python thread: Once the libev loop has been started, code in other threads won't be executed any more. If I send a request to the server -- so the libev thread leaves the libev loop code and enters my web server C code -- other Python threads' code is executed. Until the C code re-enters the libev code.

I tried threading priorities, but that didn't change anything.
Changing the backend doesn't change anything, either (I tried epoll and select).

I debugged around a little bit and found out that the other Python threads all stop some mystic `sem_wait`. Not that this is something to worry about -- but could it be that something deadlocks there? Or is it just libev that doesn't give the poor(ly implemented) Python interpreter a chance of taking back control? ;-)

I'm glad about any suggestions on how to fix this stuff.

Thanks!

    Jonas


PS: If you want code:

  git clone git://github.com/jonashaag/bjoern
  cd bjoern
  make get-http-parser
  make
  python tests

_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to