From: adash <adash>
Date: Wed, 15 Apr 2009 23:48:28 +0000 (+0000)
Subject: Add new Barrier ...will need to change it to a better implementation
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=434a21b90cc42ea1ea0f44f2b7dc7a60b54b6e4c;p=IRC.git

Add new Barrier ...will need to change it to a better implementation
---

diff --git a/Robust/src/ClassLibrary/JavaSTM/Barrier.java b/Robust/src/ClassLibrary/JavaSTM/Barrier.java
new file mode 100644
index 00000000..f8389c47
--- /dev/null
+++ b/Robust/src/ClassLibrary/JavaSTM/Barrier.java
@@ -0,0 +1,52 @@
+public class BarrierServer extends Thread {
+  int numthreads;
+  boolean done;
+
+  public BarrierServer(int n) {
+    numthreads=n;
+    done=false;
+  }
+
+  public void run() {
+    int n;
+    ServerSocket ss=new ServerSocket(2000);
+    atomic {
+      n=numthreads;
+      done=true;
+    }
+    Socket ar[]=new Socket[n];
+    for(int i=0; i<n; i++) {
+      ar[i]=ss.accept();
+    }
+
+    while(true) {
+      for(int j=0; j<n; j++) {
+	Socket s=ar[j];
+	byte b[]=new byte[1];
+	while(s.read(b)!=1) {
+	  ;
+	}
+      }
+      byte b[]=new byte[1];
+      b[0]= (byte) 'A';
+      for(int j=0; j<n; j++)
+	ar[j].write(b);
+    }
+  }
+}
+
+public class Barrier {
+  Socket s;
+  public Barrier(String name) {
+    s=new Socket(name, 2000);
+  }
+
+  public static void enterBarrier(Barrier barr) {
+    byte b[]=new byte[1];
+    b[0]=(byte)'A';
+    barr.s.write(b);
+    while(barr.s.read(b)!=1) {
+      ;
+    }
+  }
+}