libc Sleep api performs a busy waiting

Joe Fox fox.joe87 at gmail.com
Mon Mar 8 04:30:45 EST 2010


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


Can any of you point me how to over come this.?
Thanks
Mahesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100308/376db8e3/attachment.html>


More information about the Python-list mailing list