123456789101112131415161718192021222324252627282930313233343536373839 |
- class MutexTypeD extends Mutex {
- private volatile int turn;
- private volatile boolean[] flag;
-
- MutexTypeD() {
- turn = 0;
- flag = new boolean[2];
- flag[0] = flag[1] = false;
- }
- public void p(int id) {
- int other = 1 - id;
- flag[id] = true;
- while (flag[other] == true) {
- if (turn == other) {
- flag[id] = false;
- while (turn == other) Thread.yield();
- flag[id] = true;
- }
- }
- }
- public void v(int id) {
- turn = 1 - id;
- flag[id] = false;
- }
- public String toString() {
- return "D";
- }
- public void describe() {
- System.out.println("Mutex type D");
- }
- }
|