libc Sleep api performs a busy waiting

Joe Fox fox.joe87 at gmail.com
Tue Mar 9 05:13:58 CET 2010


Hi,

 actually i have simplified my scenario a lot here ,

In my actual case , i have to call a C-api which blocks on  c select , in a
separate thread.

my thread is getting struck in that api , and thus blocking all the other
threads.
Can you point to something which will help me call this blocking C-api call
without my thread getting struck.


Thanks
Mahesh

On Mon, Mar 8, 2010 at 6:03 PM, Steve Holden <steve at holdenweb.com> wrote:

> Mahesh wrote:
> > Hi,
> >
> >  I am having a problem while using sleep function from libc , the
> > thread in which i am calling it is getting struck and not allowing
> > other threads to execute.  Here is a simple code that i am trying to
> > exeute
> >
> > import threading
> > import time
> > import dl
> >
> >
> > def dummy1():
> >     a=dl.open('/lib/libc.so.6')
> >     print "in thread 1 Start"
> >     a.call('sleep',2)
> >     #time.sleep(2)
> >     print "in thread 1 End"
> >
> > def dummy2():
> >     print "in thread 2 Start"
> >     time.sleep(1)
> >     print "in thread 2 End"
> > newThread1=threading.Thread(None,dummy1)
> > newThread2=threading.Thread(None,dummy2)
> > newThread1.start()
> > newThread2.start()
> >
> > print "in main"
> >
> >
> >
> > The out put of this program is  (In this case thread 1 even though i
> > am calling a sleep function its not allowing other threads to execute,
> > other threads execute only after the completion of first thread)
> >
> > in thread 1 Start
> > in thread 1 End
> > in thread 2 Start
> > in main
> > in thread 2 End
> >
> >
> > where as if i use time.sleep instead of a.call(sleep) the out put is
> > (which i guess is right behaviour, because it start the threads and
> > suspends them because the have sleep , and continue executing the main
> > thread)
> > in thread 1 Start
> > in thread 2 Start
> > in main
> > in thread 2 End
> > in thread 1 End
> >
> >
> Why not just use the time module's sleep function? Unlike the libc code
> it releases Python's GIL (global interpreter lock), thus allowing other
> threads to run.
>
> regards
>  Steve
> --
> Steve Holden           +1 571 484 6266   +1 800 494 3119
> PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
> Holden Web LLC                 http://www.holdenweb.com/
> UPCOMING EVENTS:        http://holdenweb.eventbrite.com/
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100309/93c6cc70/attachment.html>


More information about the Python-list mailing list