2012-01-09 49 views
0

我的意思是,可以接受信號量的增加或減少嗎?我的例子如下:信號量可以使用數字操作嗎?

semaphore secureTarget = 7; 
semaphore allClearAlert = 0; 
semaphore bellAlert = 0; 

Archer: 

start(); 
wait(secureTarget); 
wait(allClearAlert); 
fireAtTarget(); 
signal(secureTarget); 
wait(secureTarget - 7); 
signal(bellAlert); 
end(); 

Boy: 

start(); 
signal(allClearAlert); 
wait(bellAlert); 
end(); 

這似乎是可以接受的嗎?如果有幫助,我想回答的最初問題是:

射箭俱樂部有7個目標。在俱樂部的弓箭手必須與 競爭才能獲得目標。一旦射手獲得了她的目標,她必須等待 ,直到完全清晰的聲音在她能夠找到之前響起。一旦射手完成射擊,她就會離開她的目標。最後一位射手完成了 ,這聽起來意味着已經完成了所有工作。只有當 收集箭頭冒險的小男孩是安全的。 當所有的箭頭都被收集後,這個男孩從箭頭 中跳出來,這對射手來說聽起來很清楚。

+3

做你自己的課程! – 2012-01-11 17:23:25

回答

2

信號量只能使用signal()和wait()方法遞增,您不能像描述的那樣明確更改變量。我無法明確地給出解決方案 - 查看您的歷史記錄我認爲我正在爲同一個模塊完成相同的課程,而且我不想爲抄襲而做,但您可能會發現Little Book of Semaphores有用。

編輯:你不必只使用信號量。只要您使用互斥信號量來控制對這些變量的併發訪問,您就可以使用其他類型的共享數據。