new Barrier class
[IRC.git] / Robust / src / ClassLibrary / Barrier.java
1 public class BarrierServer extends Thread {
2     int numthreads;
3     
4     public BarrierServer(int n) {
5         numthreads=n;
6     }
7     
8     public run() {
9         atomic {
10             n=numthreads;
11         }
12         ServerSocket ss=new ServerSocket(2000);
13         Socket ar[]=new Socket[numthreads];
14         for(int i=0;i<numthreads;i++) {
15             ar[i]=ss.accept();
16         }
17         
18         while(true) {
19             for(int j=0;j<numthreads;j++) {
20                 Socket s=ar[j];
21                 byte b[]=new byte[1];
22                 while(s.read(b)!=1)
23                     ;
24             }
25             byte b[]=new byte[1];
26             b[0]='A';
27             for(int j=0;j<numthreads;j++)
28                 ar[j].write(b);
29         }
30     }
31 }
32
33 public class Barrier {
34     Socket s;
35     public Barrier(String name) {
36         s=new Socket(name, 2000);
37     }
38     
39     public static void enterBarrier(Barrier b) {
40         byte b[]=new byte[1];
41         s.write(b);
42         while(s.read(b)!=1)
43             ;
44     }
45 }