为什么Python中没有线程挂起支持?

时间:2011-12-06 14:41:40

标签: python multithreading

在Python doc中,它说

  

该模块的设计基于Java的线程模型,...线程不能被破坏,停止,暂停,恢复或中断。

我可以理解Java和Python的底层机制是不同的。但由于UNIX和Windows都有单独的解决方案,为什么没有人编写一个可移植的lib来支持这个?或者是否已经存在并且我错过了它?

2 个答案:

答案 0 :(得分:3)

线程不是资源分配的单位,因此在线程关闭之前,线程应该关闭它获取的所有资源(包括文件,套接字和其他用户定义的资源)

你破坏线程,所有这些资源都会泄漏。

所以你不应该破坏一个线程

有关详情,请查看http://docs.oracle.com/javase/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html

答案 1 :(得分:2)

Java 习惯支持停止,中断和挂起线程,但支持已被弃用(但尚未从1.6开始,直接删除):

  

为什么不推荐使用Thread.suspend和Thread.resume?

     

Thread.suspend本身就容易出现死锁。如果是目标线程   在监视器上保持锁定,以保护关键系统资源   它被挂起,没有线程可以访问此资源,直到目标   线程恢复。如果线程将恢复目标线程   尝试在调用resume,deadlock之前锁定此监视器   结果。这种死锁通常表现为“冻结”   过程

来自http://docs.oracle.com/javase/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html