Петерсон? Алгоритм удовлетворяет голод?

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

Алгоритм Петерсона:

flag[0]   = 0;
flag[1]   = 0;
turn;

P0: flag[0] = 1;                                       
    turn = 1;                                               
    while (flag[1] == 1 && turn == 1)                        
    {                                                       
           // busy wait                                             
    }                                                                                      
    // critical section                                     
       ...                                                     
    // end of critical section                              
    flag[0] = 0;   

P1: flag[1] = 1;                                       
    turn = 0;                                               
    while (flag[0] == 1 && turn == 0)                        
    {                                                       
           // busy wait                                             
    }                                                                                      
    // critical section                                     
       ...                                                     
    // end of critical section                              
    flag[1] = 0;

Алгоритм использует две переменные, флаг и поворот. Значение флага 1 указывает, что процесс хочет войти в критическую секцию. Переменная turn содержит идентификатор процесса, чья очередь. Вход в критическую секцию предоставляется процессу P0, если P1 не хочет входить в свою критическую секцию, или если P1 дал приоритет P0, установив Turn в 0.

8
задан IZI_Shadow_IZI 27 October 2010 в 22:33
поделиться