该进程有10个线程,且所有10个线程都处于死锁状态(假设它们都在等待Mutex变量)。
如何使进程(线程)从死锁状态中解脱出来呢?是否有一种方法可以杀死优先级较低的线程?(在多进程的情况下,当所有进程都处于死锁状态时,我们可以杀死优先级较低的进程。)
我们可以将死锁进程附加到调试器上,并为Mutex变量分配适当的值吗?(假设所有线程都在等待一个名为MUT的Mutex变量,但它的值为0,我们可以通过调试器将MUT的值分配为1吗?)
该进程有10个线程,且所有10个线程都处于死锁状态(假设它们都在等待Mutex变量)。
如何使进程(线程)从死锁状态中解脱出来呢?是否有一种方法可以杀死优先级较低的线程?(在多进程的情况下,当所有进程都处于死锁状态时,我们可以杀死优先级较低的进程。)
我们可以将死锁进程附加到调试器上,并为Mutex变量分配适当的值吗?(假设所有线程都在等待一个名为MUT的Mutex变量,但它的值为0,我们可以通过调试器将MUT的值分配为1吗?)
synchronized
或lock
块将互斥量嵌入语言中的语言中,这稍微有点难,但几乎总是可以做到的。如果等待锁超时,请释放您拥有的所有锁/互斥量,并稍后再试。
- 更好的解决方案,但可能更加复杂,是找出为什么所有东西都在争夺资源并消除争用。如果必须锁定,请保持一致。但是,如果有10个线程在单个互斥量上阻塞,那可能是一个线索,表明您的操作被块状化得很糟糕(即:您的线程在尝试获取锁之前做太多或太少的工作),或者存在不必要的锁定。除非必须锁定,否则不要锁定。使用专门设计为“无锁定”但仍提供线程安全性的集合和算法可以省略一些同步。