summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-09 15:00:41 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-09 15:00:41 +0000
commit2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f (patch)
tree629412ad71ebcaa3a27e50f9c82bf4be62af7ccc /sources
parent253a192ede3e994d6c832c124c7c02fb551d1006 (diff)
downloadscala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.tar.gz
scala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.tar.bz2
scala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.zip
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/concurrent/Actor.scala6
-rw-r--r--sources/scala/concurrent/Channel.scala11
-rw-r--r--sources/scala/concurrent/LinkedList.scala12
3 files changed, 11 insertions, 18 deletions
diff --git a/sources/scala/concurrent/Actor.scala b/sources/scala/concurrent/Actor.scala
index c86fd5dfb7..dd4cee26d2 100644
--- a/sources/scala/concurrent/Actor.scala
+++ b/sources/scala/concurrent/Actor.scala
@@ -2,17 +2,17 @@ package scala.concurrent;
abstract class Actor extends Thread() {
- type Message = Any;
+ type Message = AnyRef;
private val mb = new MailBox;
def send(msg: Message): unit =
mb.send(msg);
- protected def receive[a](f: PartialFunction[Message, a]): a =
+ def receive[a](f: PartialFunction[Message, a]): a =
mb.receive(f);
- protected def receiveWithin[a](msec: long)(f: PartialFunction[Message, a]): a =
+ def receiveWithin[a](msec: long)(f: PartialFunction[Message, a]): a =
mb.receiveWithin(msec)(f);
}
diff --git a/sources/scala/concurrent/Channel.scala b/sources/scala/concurrent/Channel.scala
index b89e20f065..8c4faa1b61 100644
--- a/sources/scala/concurrent/Channel.scala
+++ b/sources/scala/concurrent/Channel.scala
@@ -1,14 +1,18 @@
package scala.concurrent;
class Channel[a] with Monitor {
+ class LinkedList[a] {
+ var elem: a = _;
+ var next: LinkedList[a] = null;
+ }
private var written = new LinkedList[a];
- private var lastWritten = written;
+ private var lastWritten = new LinkedList[a];
private var nreaders = 0;
def write(x: a) = synchronized {
+ lastWritten.elem = x;
lastWritten.next = new LinkedList[a];
lastWritten = lastWritten.next;
- lastWritten.elem = x;
if (nreaders > 0) notify();
}
@@ -16,7 +20,8 @@ class Channel[a] with Monitor {
if (written.next == null) {
nreaders = nreaders + 1; wait(); nreaders = nreaders - 1;
}
+ val x = written.elem;
written = written.next;
- written.elem;
+ x
}
}
diff --git a/sources/scala/concurrent/LinkedList.scala b/sources/scala/concurrent/LinkedList.scala
deleted file mode 100644
index 7e9358b36d..0000000000
--- a/sources/scala/concurrent/LinkedList.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-package scala.concurrent;
-class LinkedList[a] {
- var elem: a = _;
- var next: LinkedList[a] = null;
- def insert(elem: a): LinkedList[a] = {
- val nx = new LinkedList[a];
- nx.elem = elem;
- nx.next = next;
- next = nx;
- next
- }
-}