M
Mahesh
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
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