如果一个线程锁定了一个互斥锁而没有将其解锁,那么其他线程是否应该被阻塞?

时间:2019-03-29 06:39:08

标签: c multithreading winapi mutex

下面的代码输出为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)。

1 个答案:

答案 0 :(得分:6)

其他线程被阻塞,直到持有互斥锁的线程结束。互斥锁在线程的(正常)端自动释放,因为没有人握住它。但是使用该功能是不好的编码习惯。您应该始终释放明确的互斥体。