Критическая секция с сефаморами

  1. Возьмите этот псевдокод,

    Semaphore S <- 0 
    non-critical section 
    wait(S)
    critical section 
    signal(S)
    

Поддерживает ли это решение проблемы критической секции только взаимное исключение?

Я знаю, что нет свободы от тупика, поскольку критическая секция никогда не достигается, однако это также означает, что она не поддерживает взаимное исключение.


person Kyle    schedule 28.02.2017    source источник


Ответы (1)


Взаимное исключение означает, что только 1 thread(or process) может войти в Critical Section. Так что по определению код не нарушает mutual exclusion.

Здесь важно отметить, что все threads будут в состоянии busy-waiting, а progress вообще нет, но на самом деле тупика нет, потому что одним из 4-х условий тупика является ЦИРКУЛЯРНОЕ ОЖИДАНИЕ. Но дело не в том, что в этом случае потоки ждут друг друга.

person Sumeet    schedule 01.03.2017