为什么会有';Python中没有线程挂起支持吗?

为什么会有';Python中没有线程挂起支持吗?,python,multithreading,Python,Multithreading,在Python中,它说 该模块的设计松散地基于Java的线程模型。。。不能销毁、停止、挂起、恢复或中断线程 我可以理解Java和Python的底层机制是不同的。但是,由于UNIX和Windows都有各自的解决方案,为什么没有人编写一个可移植库来支持这一点呢?或者已经存在一个线程,但我没有找到它?线程不是资源分配的单元,因此在关闭线程之前,线程应该关闭它获取的所有资源(包括文件、套接字和其他用户定义的资源) 如果你破坏了线程,所有这些资源都会泄漏 所以你不应该破坏线程 有关详细信息,请检查线程不是

在Python中,它说

该模块的设计松散地基于Java的线程模型。。。不能销毁、停止、挂起、恢复或中断线程


我可以理解Java和Python的底层机制是不同的。但是,由于UNIX和Windows都有各自的解决方案,为什么没有人编写一个可移植库来支持这一点呢?或者已经存在一个线程,但我没有找到它?

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

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

所以你不应该破坏线程


有关详细信息,请检查线程不是资源分配的单元,因此在关闭线程之前,线程应关闭它获取的所有资源(包括文件、套接字和其他用户定义的资源)

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

所以你不应该破坏线程

有关更多信息,请查看用于支持停止、中断和挂起线程的Java,但该支持已被弃用(但从1.6开始尚未完全删除):

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

Thread.suspend本质上易于死锁。如果目标线程 在以下情况下锁定监视器以保护关键系统资源: 它已挂起,在目标启动之前,任何线程都无法访问此资源 线程已恢复。如果要恢复目标线程的线程 在调用resume、deadlock之前尝试锁定此监视器 结果。这种死锁通常表现为“冻结” 过程

Java用于支持停止、中断和挂起线程,但该支持已被弃用(但从1.6开始,尚未完全删除):

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

Thread.suspend本质上易于死锁。如果目标线程 在以下情况下锁定监视器以保护关键系统资源: 它已挂起,在目标启动之前,任何线程都无法访问此资源 线程已恢复。如果要恢复目标线程的线程 在调用resume、deadlock之前尝试锁定此监视器 结果。这种死锁通常表现为“冻结” 过程



来看,Windows中没有真正支持线程挂起,我不知道*nix。也许您正在考虑使用
SuspendThread
,但不应该使用该函数!如果Windows不支持,那么为什么Java可以这样做呢?这是因为Java控制并管理其JVM中的所有线程吗?我不知道Java,但你说的确实是有道理的。@ziliangdotme:。这是一个穷人的同步,这也碰巧是完全不安全的,因为线程可能在执行过程中的任意点被挂起(包括当它们持有其他同步资源时)。但至少可以做到,对吗?我只是在谈论实现,而不是安全性。Windows中没有真正支持线程挂起,我不知道*nix。也许您正在考虑使用
SuspendThread
,但不应该使用该函数!如果Windows不支持,那么为什么Java可以这样做呢?这是因为Java控制并管理其JVM中的所有线程吗?我不知道Java,但你说的确实是有道理的。@ziliangdotme:。这是一个穷人的同步,这也碰巧是完全不安全的,因为线程可能在执行过程中的任意点被挂起(包括当它们持有其他同步资源时)。但至少可以做到,对吗?我说的只是实施,不是安全……我不知道为什么有人否决了这一点,因为这是正确的。如果您想要一个可以挂起和终止的重量级控制线程,请使用进程。如果您想要低开销,请使用线程-有很多可移植的标准同步原语,线程可以使用这些原语来挂起和终止自己。@Dave:进程(如文件锁等)可能会发生相同类型的泄漏。杀死另一个控制线程应该是最后的手段,而不是你的主要操作方式。好吧,我知道摧毁一个线程是不好的,但是暂停怎么样?我认为它在某些情况下可能很有用。好吧,提供一个例子,说明在执行过程中在随机点挂起线程比让线程在已知位置等待已知资源更可取。@ziliangdotme如果线程获得锁,暂停此线程将使此锁永久锁定,那么,使用循环并在每次循环前检查暂停标志如何?我不知道为什么有人否决了这个,因为它是正确的。如果您想要一个可以挂起和终止的重量级控制线程,请使用进程。如果您想要低开销,请使用线程-有很多可移植的标准同步原语,线程可以使用这些原语来挂起和终止自己。@Dave:进程(如文件锁等)可能会发生相同类型的泄漏。杀死另一个控制线程应该是最后的手段,而不是你的主要操作方式。好吧,我知道摧毁一个线程是不好的,但是暂停怎么样?我认为它在某些情况下可能很有用。好吧,提供一个例子,说明在执行过程中在随机点挂起线程比让线程在已知位置等待已知资源更可取。@ziliangdotme如果线程获得锁,暂停此线程将使此锁永久锁定,那么,如何使用循环并在每个循环之前检查暂停标志呢