📜  门| GATE-CS-2017(Set 1)|第54章

📅  最后修改于: 2021-06-30 01:31:12             🧑  作者: Mango

多线程程序P用x个线程执行,并使用y个锁,以确保在共享内存位置上操作时互斥。程序中的所有锁都是不可重入的,即,如果线程持有锁l,则它不能在不释放锁的情况下重新获得锁l。如果线程无法获取锁,则它将阻塞直到锁可用为止。最小值
x的值和y的最小值(执行P可能会导致死锁)是:
(A) x = 1,y = 2
(B) x = 2,y = 1
(C) x = 2,y = 2
(D) x = 1,y = 1答案: (D)
说明:可重入(递归)锁允许线程重新获取该锁。这意味着同一进程可以多次申请锁定,而不会对其自身进行阻塞。这样可以防止线程自身死锁。与非可重入锁相比,这是可重入锁的主要优点。

非可重入(非递归)锁不允许线程重新获取该锁。这意味着同一进程不能多次释放锁而不释放锁。因此,如果线程/进程无法获取锁,它将阻塞直到锁可用。这种情况陷入僵局。

因此,如果线程确实尝试重新获得锁,则只有一个线程和只有一个锁会导致死锁。

当我们拥有多个进程或一个锁时,进程/线程可以获取另一把锁以进一步进行处理,或者其他进程/线程可以获取锁以进行进一步处理。

该解释由Mithlesh Upadhyay提供。
这个问题的测验