SGCluster.java
class SGCluster$C1P1 {
// STATE SPACE VARIABLES:
private static int C1_in , C1_out , P1_in , P1_out ;
// LOCAL VARIABLES:
private static Object clusterCounterLock = new Object();
/**======================================================**
**
** Generated lock and methods for atomic: C1$enter
**
**======================================================**/
public static void C1$enter() {
synchronized (clusterCounterLock) {
C1_in ++ ;
}
synchronized (condition$C1$exit) {
condition$C1$exit.notify();
}
synchronized (condition$P1$exit) {
condition$P1$exit.notifyAll();
}
}
/**======================================================**
**
** Generated lock and methods for await: C1$exit
**
**======================================================**/
private static Object condition$C1$exit = new Object();
public static void C1$exit(){
synchronized (condition$C1$exit) {
while ( !check$C1$exit())
try {
condition$C1$exit.wait();
} catch (InterruptedException e){}
}
}
private static boolean check$C1$exit() {
synchronized (clusterCounterLock) {
if (C1_out + 1 <= C1_in && C1_out + 1 <= P1_in / 10 ) {
C1_out ++ ;
return true;
} else
return false;
}
}
/**======================================================**
**
** Generated lock and methods for atomic: P1$enter
**
**======================================================**/
public static void P1$enter() {
synchronized (clusterCounterLock) {
P1_in ++ ;
}
synchronized (condition$C1$exit) {
condition$C1$exit.notify();
}
synchronized (condition$P1$exit) {
condition$P1$exit.notifyAll();
}
}
/**======================================================**
**
** Generated lock and methods for await: P1$exit
**
**======================================================**/
private static Object condition$P1$exit = new Object();
public static void P1$exit(){
synchronized (condition$P1$exit) {
while ( !check$P1$exit())
try {
condition$P1$exit.wait();
} catch (InterruptedException e){}
}
}
private static boolean check$P1$exit() {
synchronized (clusterCounterLock) {
if (P1_out + 1 <= C1_in * 10 && P1_out + 1 <= P1_in / 10 * 10 ) {
P1_out ++ ;
return true;
} else
return false;
}
}
}
syntax highlighted by Code2HTML, v. 0.9

