2012-01-09 7 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つのターゲットがあります。クラブの射手は と競争して目標を確保する必要があります。射手が彼女の目標を確保したら、彼女は撃たれる前に全クリアが鳴るまで を待たなければならない。アーチェリーがファイナルリングを完了すると、彼女は目標を去ります。 を最終的に完成させる最後の弓兵は、すべてが完成したことを示す鐘を鳴らします。それでは は、矢印を集めている小さな男の子にとっては安全です。 すべての矢印が収集されると、少年はfiのリング の線から出て、射手に完全にクリアな音を出します。

+3

自分のコースをやってください! –

答えて

2

semaphoresはsignal()メソッドとwait()メソッドを使用してのみインクリメントできますが、記述したとおりに変数を明示的に変更することはできません。私は解決策を明示的に与えることはできません - あなたの歴史を見て私は同じモジュールについて同じ講義をしていると思いますが、私は剽窃のためにやりたくありませんが、Little Book of Semaphoresが役に立ちます。

EDIT:セマフォを使用する必要はありません。ミューテックスセマフォを使用してこれらの変数への同時アクセスを制御している限り、他のタイプの共有データを使用できます。

関連する問題