提问人:Florian Masy 提问时间:10/27/2023 最后编辑:Florian Masy 更新时间:10/27/2023 访问量:16
在 CPython 中,当互斥锁的拥有线程被“杀死”时会发生什么?
In CPython what happen to a mutex when its owning thread is "killed"?
问:
正如标题所述,我有一个关于 CPython 中的线程和互斥锁的问题。 所以我的程序使用多个线程,其中一个线程是负责的“控制器” 监视其他线程。
当我检测到一个线程在其主循环开始时没有实现其时间戳时,我将其标记为未运行并尝试“删除”它。
在这种情况下,控制器会执行以下操作:
self.__thread_set_state(thread_id=self.job_thread_main.ident, running=False)
del self.job_thread_main
然后我启动一个新线程来“重新启动”相应目标代码的执行
self.job_thread_main = threading.Thread(target=self.jobd_main)
self.job_thread_main.start()
但似乎新线程没有进入其主循环,因为时间戳没有更新。在主循环之前,执行了一些代码,这些代码将尝试获取互斥锁。
是否有可能前一个线程始终拥有互斥锁?
即使它不是一个理想的解决方案(重构实际代码正在讨论中,但这需要时间),是否有任何方法可以确保线程被杀死,更重要的是它拥有的互斥锁被释放,如果没有被释放,如何释放这些互斥锁?
答: 暂无答案
评论