【发布时间】:2014-09-06 06:52:44
【问题描述】:
在我的程序中,我有一个线程,它只是从服务器发送和获取更新。我尝试优雅地处理异常,但万一线程死亡,我只想重新启动它。问题是线程在使用某些资源之前获取锁(Threading.RLock 对象),我不知道如果线程在获取锁之后但在释放它之前死亡会发生什么。遇到这种情况怎么办?
【问题讨论】:
-
什么是死亡?你是如何获得锁的?异常将自动释放作为
with语句上下文管理器获取的任何锁,因为它们在堆栈中传播,但如果死亡意味着死锁或者您获取的锁不安全,您可能无法获得如此好的保证。 -
@user2357112 在我无法处理的异常中死亡,线程退出,调用 mythread.is_alive() 返回 false。你能解释更多关于线程和 with 语句的信息吗?
-
@user2357112 非常好的点。您可能应该重写您的两个 cmets 作为答案。
标签: python multithreading thread-safety