Распределенное взаимное исключение Лампорта - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь смоделировать распределенное взаимное исключение Лампорта для 3 процессов. P1 и P2 запрашивают критические секции и поэтому отправляют сообщения запроса другим двум процессам. Проблема в том, что я могу получить ответные сообщения от P2 и P1, но не могу получить ответные сообщения от P3. Программа остается в бесконечном цикле. Я сохранил важные части, связанные с моим кодом здесь. Пожалуйста, помогите мне в этом.

printf("P2 sends Request Message to P1\n");
    f=fopen(fifo3,"a"); // send request to P3

    fprintf(f,"%d %d\n",2,clock_val[1]);
    fclose(f);

===================================================

 void *func3(void* aa)
        {
        printf("STARTED P3\n");
        FILE*f;
        struct Message*msg;
        struct Message list[100];
        int list_index=0;
        int reply[4]={0,0,0,0};
        //
        // NOW P3 will receive messages
        // but we cannot be sure about the number so we make it a infinite loop
        //
        int line=1,option;
        // line :- last line number which has been read in FIFO
        while(1)
        {
        //printf("hell");
        //printf("%d",message_read(fifo3,line));
        if((msg=message_read(fifo3,line))!=NULL)  // If Message is fetched 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...