割り当てのために、Javaでカウントセマフォを作成する必要があります。私はこれまでにこのベアボーンクラスを作成しました
public class Semaphore {
int value;
public Semaphore(int value) {
this.value = value;
}
public static void wait(Semaphore s) {
s.value--;
if (s.value < 0) {
// block
}
}
public static void signal(Semaphore s) {
s.value++;
if (s.value <= 0) {
// unblock one process that is blocked on semaphore
}
}
}
今私が混乱しているのは、wait()でどのように正確にブロックし、逆にsignal()で1つのスレッドのブロックを解除するのかということです。ブロックされたキューがあることを読んでいましたが、そのキューへの参照をどこに保持しますか?