【发布时间】:2013-01-11 22:59:26
【问题描述】:
我有 3 个线程,目前正在同时运行。
def f1():
print "running first thread\n"
sleep(10)
def f2():
print "running second thread\n"
sleep(10)
def f3():
print "running third thread\n"
sleep(10)
if __name__ == "__main__":
thread1 = Thread(target = f1)
thread2 = Thread(target = f2)
thread3 = Thread(target = f3)
try:
thread1 = Thread(target = f1)
thread1.start()
thread2 = Thread(target = f2)
thread2.start()
thread3 = Thread(target = f3)
thread3.start()
while(thread1.isAlive() or thread2.isAlive() or thread3.isAlive()):
thread1.join()
thread2.join()
thread3.join()
except (KeyboardInterrupt, SystemExit):
sys.exit()
如何模拟死锁?另外,我怎样才能让每个线程一个接一个地运行?我还可以列出当前在我的脚本中运行的所有线程吗?还是给他们优先级?
【问题讨论】:
-
您是在尝试模拟死锁(如标题所示),还是实际创建死锁(如正文所示)?而且,如果是后者,您只是想要一个在现实生活中永远不会出现的微不足道的人为死锁案例,还是有点现实场景的最简单示例?
-
对于初学者,您可能想要一个可以在某处死锁的锁:effbot.org/zone/thread-synchronization.htm
-
@abarnert;我实际上需要模拟一个死锁,抱歉我编辑了我的帖子。
-
@paulsm4:嗯,你可以使用线程本身。例如,只需在
f1中执行thread2.join()和在f2中执行thread1.join(),就会死锁。