下面的代码输出为4000; 如果具有互斥锁的线程不释放它,为什么是4000。我虽然会陷入僵局,但主要是我等待所有功能完成。
function loadFunction()
{
alert('Load');
}
function closeFunction()
{
alert('Close');
}
var fnObj = eval("load" + "Function");
fnObj(); // Will execute loadFunction
fnObj = eval("close" + "Function");
fnObj(); // Will execute closeFunction
预期结果是死锁,实际结果是4000(计数= 4000)。
答案 0 :(得分:6)
其他线程被阻塞,直到持有互斥锁的线程结束。互斥锁在线程的(正常)端自动释放,因为没有人握住它。但是使用该功能是不好的编码习惯。您应该始终释放明确的互斥体。