summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2004-02-16 12:50:22 +0000
committermichelou <michelou@epfl.ch>2004-02-16 12:50:22 +0000
commit7cf98e704a6dcca849865a69a9759f563908fc0a (patch)
treea5f7b265e41f42498eb22cb06b2509af240ff8e9 /sources
parent2f8a23ed07ba1f19db492999f21b8b79feba1da0 (diff)
downloadscala-7cf98e704a6dcca849865a69a9759f563908fc0a.tar.gz
scala-7cf98e704a6dcca849865a69a9759f563908fc0a.tar.bz2
scala-7cf98e704a6dcca849865a69a9759f563908fc0a.zip
- added header with $id.
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/concurrent/Actor.scala10
-rw-r--r--sources/scala/concurrent/MailBox.scala10
-rw-r--r--sources/scala/concurrent/NameServer.scala38
-rw-r--r--sources/scala/concurrent/SyncVar.scala22
-rw-r--r--sources/scala/concurrent/TIMEOUT.scala9
-rw-r--r--sources/scala/concurrent/jolib.scala21
6 files changed, 84 insertions, 26 deletions
diff --git a/sources/scala/concurrent/Actor.scala b/sources/scala/concurrent/Actor.scala
index 0e8caa4b7f..9ffd0bb7c7 100644
--- a/sources/scala/concurrent/Actor.scala
+++ b/sources/scala/concurrent/Actor.scala
@@ -1,5 +1,15 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
package scala.concurrent;
+
abstract class Actor extends Thread with MailBox;
diff --git a/sources/scala/concurrent/MailBox.scala b/sources/scala/concurrent/MailBox.scala
index 6423ee88ba..c4598f6bab 100644
--- a/sources/scala/concurrent/MailBox.scala
+++ b/sources/scala/concurrent/MailBox.scala
@@ -1,5 +1,15 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
package scala.concurrent;
+
//class MailBox with Monitor with LinkedListQueueCreator {
class MailBox with ListQueueCreator {
diff --git a/sources/scala/concurrent/NameServer.scala b/sources/scala/concurrent/NameServer.scala
index 21375d7e9d..b15d5d9dd9 100644
--- a/sources/scala/concurrent/NameServer.scala
+++ b/sources/scala/concurrent/NameServer.scala
@@ -1,25 +1,35 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
package scala.concurrent;
+
object NameServer {
- val names=new scala.collection.mutable.HashMap[Symbol,Process];
- def register(name:Symbol,proc:Process) = {
- if (names.contains(name)) error("Name:" + name + " already registred");
- names += name -> proc;
+ val names = new scala.collection.mutable.HashMap[Symbol, Process];
+
+ def register(name: Symbol, proc: Process) = {
+ if (names.contains(name)) error("Name:" + name + " already registred");
+ names += name -> proc;
}
- def unregister(name:Symbol) = {
- if (names.contains(name))
- names -= name;
- else
- error("Name:" + name + " not registred");
+ def unregister(name: Symbol) = {
+ if (names.contains(name))
+ names -= name;
+ else
+ error("Name:" + name + " not registred");
}
- def whereis(name:Symbol):Option[Process] =
- names.get(name);
+ def whereis(name: Symbol): Option[Process] =
+ names.get(name);
- def send(name:Symbol, msg:Actor#Message) = {
- names(name).send(msg)
- }
+ def send(name: Symbol, msg: Actor#Message) =
+ names(name).send(msg);
}
diff --git a/sources/scala/concurrent/SyncVar.scala b/sources/scala/concurrent/SyncVar.scala
index a05ef32f86..ec3fd281e2 100644
--- a/sources/scala/concurrent/SyncVar.scala
+++ b/sources/scala/concurrent/SyncVar.scala
@@ -1,19 +1,37 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
package scala.concurrent;
+
class SyncVar[a] {
+
private var isDefined: Boolean = false;
private var value: a = _;
+
def get = synchronized {
if (!isDefined) wait();
value
}
+
def set(x: a) = synchronized {
- value = x ; isDefined = true ; notifyAll();
+ value = x;
+ isDefined = true;
+ notifyAll()
}
+
def isSet: Boolean =
isDefined;
+
def unset = synchronized {
- isDefined = false;
+ isDefined = false
}
+
}
diff --git a/sources/scala/concurrent/TIMEOUT.scala b/sources/scala/concurrent/TIMEOUT.scala
index 5c26cf8611..d665fdf649 100644
--- a/sources/scala/concurrent/TIMEOUT.scala
+++ b/sources/scala/concurrent/TIMEOUT.scala
@@ -1,3 +1,12 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+** $Id$
+\* */
+
package scala.concurrent;
case class TIMEOUT();
diff --git a/sources/scala/concurrent/jolib.scala b/sources/scala/concurrent/jolib.scala
index 38623df370..f6e5065475 100644
--- a/sources/scala/concurrent/jolib.scala
+++ b/sources/scala/concurrent/jolib.scala
@@ -1,14 +1,15 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL **
+** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
** $Id$
-\* */
+\* */
package scala.concurrent;
+
/**
* Library for using join-calculus concurrent primitives in Scala.
*/
@@ -35,24 +36,24 @@ object jolib {
def tryMatch =
(ruls find { case Pair(p, _) => canMatch(p) }) match {
- case None => () => ();
- case Some(Pair(p, r)) => {
- val args = values(p);
- () => concurrent.ops.spawn(r(args))
- }
+ case None => () => ();
+ case Some(Pair(p, r)) => {
+ val args = values(p);
+ () => concurrent.ops.spawn(r(args))
+ }
}
}
/////////////////// SIGNALS /////////////////////////
- abstract class Signal (join: Join) {
+ abstract class Signal(join: Join) {
type C;
val queue = new collection.mutable.Queue[C];
def tryReduction(x: C): unit = {
val continuation = join synchronized {
- queue.enqueue(x);
- join.tryMatch
+ queue.enqueue(x);
+ join.tryMatch
};
continuation()
}