diff options
author | Martin Odersky <odersky@gmail.com> | 2004-01-09 14:33:04 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-01-09 14:33:04 +0000 |
commit | 253a192ede3e994d6c832c124c7c02fb551d1006 (patch) | |
tree | c3fc90ddde9960bb4271ca758c58f92754dcc37b /sources | |
parent | 57bf1138b8fdaafc9c4ea1e883aba222ec8117cc (diff) | |
download | scala-253a192ede3e994d6c832c124c7c02fb551d1006.tar.gz scala-253a192ede3e994d6c832c124c7c02fb551d1006.tar.bz2 scala-253a192ede3e994d6c832c124c7c02fb551d1006.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 | 8 | ||||
-rw-r--r-- | sources/scala/concurrent/LinkedList.scala | 12 |
3 files changed, 18 insertions, 8 deletions
diff --git a/sources/scala/concurrent/Actor.scala b/sources/scala/concurrent/Actor.scala index dd4cee26d2..c86fd5dfb7 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 = AnyRef; + type Message = Any; private val mb = new MailBox; def send(msg: Message): unit = mb.send(msg); - def receive[a](f: PartialFunction[Message, a]): a = + protected def receive[a](f: PartialFunction[Message, a]): a = mb.receive(f); - def receiveWithin[a](msec: long)(f: PartialFunction[Message, a]): a = + protected 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 e82568b956..b89e20f065 100644 --- a/sources/scala/concurrent/Channel.scala +++ b/sources/scala/concurrent/Channel.scala @@ -1,16 +1,14 @@ package scala.concurrent; -import scala.collection.mutable.LinkedList; - class Channel[a] with Monitor { - var dummy: a = _; - private var written = new LinkedList[a](dummy, null); + private var written = new LinkedList[a]; private var lastWritten = written; private var nreaders = 0; def write(x: a) = synchronized { - lastWritten.next = new LinkedList(x, null); + lastWritten.next = new LinkedList[a]; lastWritten = lastWritten.next; + lastWritten.elem = x; if (nreaders > 0) notify(); } diff --git a/sources/scala/concurrent/LinkedList.scala b/sources/scala/concurrent/LinkedList.scala new file mode 100644 index 0000000000..7e9358b36d --- /dev/null +++ b/sources/scala/concurrent/LinkedList.scala @@ -0,0 +1,12 @@ +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 + } +} |