gpt4 book ai didi

python - 如果 Python 线程在获取锁后死亡,会发生什么情况?

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:21 24 4
gpt4 key购买 nike

在我的程序中,我有一个线程只从服务器发送和获取更新。我尝试优雅地处理异常,但以防万一线程死了我只想重新启动它。问题是线程在使用某些资源之前获取锁(Threading.RLock 对象),我不知道如果线程在获取锁之后但在释放锁之前死掉会发生什么。我该如何处理这种情况?

最佳答案

如果你acquire your locks using with statements :

with whatever_lock:
do_stuff()

或在正确构造的 try-finally 语句中(不太推荐,但有时是必要的):

whatever_lock.acquire()
try:
do_stuff()
finally:
whatever_lock.release()

然后,如果发生异常,当异常传播到获取锁的控制流结构之外时,锁将被释放。

这意味着如果您做事正确,垂死的线程通常会在它们死亡时释放所有锁。另一方面,如果您没有安全地获取锁,或者如果线程死亡可能意味着死锁而不是未处理的异常,那么当线程死亡时,锁可能会保持获取状态。

关于python - 如果 Python 线程在获取锁后死亡,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25697684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com