n個並發進程共用一個公共變量Q,寫出用信號燈實現n個進程互斥的程序描述,給出信號燈值得取值范圍,並說明每個取值范圍的物理意義。


答:

var mutex: semaphore:=1;

         begin

         cobegin

                   process i : begin   // i = 1,2,……,n

                            repeat

                                     P(mutex);

                                     對公共變量Q的訪問;

                                     V(mutex);

                                     reminder section

                            until false;

                   end

         coend

信號量mutex的取值范圍為mutex.value∈[1,-(n-1)]

1、  值為1時表示沒有進程訪問公共變量

2、  值為2時表示有一個進程正在訪問公共變量

3、  值為3時表示有一個進程正在訪問公共變量,同時又|mutex.value|個進程等待訪問公共變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM