Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reindent, no change at all
[simgrid.git] / src / java / simgrid / msg / Sem.java
index 21364a7..e71317f 100644 (file)
@@ -1,34 +1,38 @@
-package simgrid.msg;\r
-\r
-public class Sem { \r
-       private int permits_;\r
-       \r
-       public Sem(int i) {\r
-               permits_ = i;\r
-       }\r
-       \r
-       public void acquire() throws InterruptedException {\r
-               \r
-               if (Thread.interrupted()) \r
-                       throw new InterruptedException();\r
-               \r
-               synchronized(this) {\r
-               \r
-                       try {\r
-                                       while (permits_ <= 0) \r
-                                               wait();\r
-                                       \r
-                                       --permits_;\r
-                       }\r
-                       catch (InterruptedException ex) {\r
-                               notify();\r
-                               throw ex;\r
-                       }\r
-               }\r
-       }\r
-\r
-       public synchronized void release() {\r
-               ++(this.permits_);\r
-               notify();\r
-       }\r
-}\r
+/*\r
+ * $Id$\r
+ *\r
+ * Copyright 2006,2007 Martin Quinson, Malek Cherier           \r
+ * All right reserved. \r
+ *\r
+ * This program is free software; you can redistribute \r
+ * it and/or modify it under the terms of the license \r
+ *(GNU LGPL) which comes with this package. \r
+ */  \r
+  \rpackage simgrid.msg;
+\r\rpublic class Sem {
+  \r\r
+        /******************************************************************/ \r
+    /* Simple semaphore implementation, from Doug Lea (public domain) */ \r
+        /******************************************************************/ \r
+  private int permits_;
+  \r\rpublic Sem(int i) {
+    \rpermits_ = i;
+  \r\r\rpublic void acquire() throws InterruptedException {
+    \r \r if (Thread.interrupted())
+      \rthrow new InterruptedException();
+    \r\rsynchronized(this) {
+      \r\rtry {
+        \rwhile (permits_ <= 0)
+          \rwait();
+        \r\r--permits_;
+      \r}
+       \rcatch(InterruptedException ex) {
+        \rnotify();
+        \rthrow ex;
+      \r}
+    \r}
+  \r}
+  \r\rpublic synchronized void release() {
+    \r++(this.permits_);
+    \rnotify();
+\r\r\r