diff options
author | Martin Odersky <odersky@gmail.com> | 2004-01-09 15:00:41 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-01-09 15:00:41 +0000 |
commit | 2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f (patch) | |
tree | 629412ad71ebcaa3a27e50f9c82bf4be62af7ccc /sources | |
parent | 253a192ede3e994d6c832c124c7c02fb551d1006 (diff) | |
download | scala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.tar.gz scala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.tar.bz2 scala-2f88fe7918a98e0e076fc3d44e9b8ca646c64c1f.zip |
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/concurrent/Actor.scala | 6 | ||||
-rw-r--r-- | sources/scala/concurrent/Channel.scala | 11 | ||||
-rw-r--r-- | sources/scala/concurrent/LinkedList.scala | 12 |
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 - } -} |