我有几个线程和一个互斥锁。一个线程可以锁定这个互斥锁,我想要另一个线程解锁这个互斥锁,但是抛出了以下错误:
e.ToString()
如何忽略此错误?或者有其他解决方案?
修改
我有几个线程可以完成一项工作。当第一个线程开始执行工作时,它会锁定互斥锁。其他人可能会出现并开始做同样的工作。在完成工作的最后一个线程(provavelemnte,而不是第一个)之后,它必须解锁互斥锁。
因此,第一个线程锁定互斥锁,最后一个线程解锁。
答案 0 :(得分:0)
Mutex是互斥的缩写。这意味着当一个线程获取作业并锁定其互斥锁时,其他线程不应该触及它,实际上应该被阻塞,直到互斥锁被释放(由锁定它的线程) )。
由于您似乎希望同时使用多个线程来操作,我不知道您尝试使用互斥锁做什么。在您澄清用例之前,我无法为您提供适当的替代方案。 : - (
答案 1 :(得分:0)
实现抢救ThreadError
for block,解锁Mutex
,如下所示:
begin
m.unlock
rescue ThreadError => e
puts "Nothing todo"
end
但请注意:ThreadError
可能会因其他与线程相关的操作而引发。
你必须保证救援不会导致程序逻辑崩溃。