///****似乎解法是乙個工人,而不是兩個工人,需要改進****//
問題描述:
兩個搬運工人向卡車中裝純淨水,每車最多20箱。卡車裝滿即開走,需裝10輛車。給出簡單的同步分析及演算法,寫明訊號量的含義和初值
解答 :
設定變數
/***車(互斥)***/
①semaphore m=1
/***工人裝滿20箱水->車就離開(同步)***/
②semaphore go=0
/***記錄車裝水20次,實現車需要裝水->工人裝水(同步),用for迴圈控制裝20次***/
semaphore empty=0
/***設定乙個整形變數count,用於判斷工人是否裝水20次用來響應車離開***/
int count=0
che()
void main(){
for(i=1;i<=20;i++)
che();
work();
work(){
while(true){
wait(empty);
count++;
【empty變數的設定就是為了使count變數加到20用來if語句判斷,從而釋放go變數來讓che()知道已經裝滿20次水車可以離開】
if(count==20)
{signal(go);
【釋放go,che()可以離開了】
count=0;
【count清零,用於下一次判斷】
普通變數,static變數
普通變數,static變數雖然都是變數,但是他們有很大的區別,下面從儲存區域,初始化值,作用域,生命週期來辨析他們 在同乙個檔案下 測試使用,無意義 void add int a,int b intmain 結果 sum 6356940 tmp的初始化值 53 sum 1944111648通過結果可...
屬性和普通變數區別
1 資料安全 因為a是個公有變數,在類的外部可以任意更改,為了防止因使用者任意更改,可用屬性get set來限制 b的的唯讀 只寫或控制 b的最大或最小 引用一位老兄的簡答 其實自定義變數已經預設實現了屬性,只是簡單的讀寫而已,我們定義的屬性要在讀寫的基礎上加上更多限制,以後你學的多了就會發現,很多...
final變數和普通變數的區別
public class test public static void main string args string a handao final string b han string c han string d b dao string e c dao system.out.println...