diff options
author | michelou <michelou@epfl.ch> | 2003-12-08 16:17:42 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2003-12-08 16:17:42 +0000 |
commit | 5e87c33e2aaec7a0c9bcd6f257a9a8e4f9664529 (patch) | |
tree | 941571431fef1a7273ea82fa2475b99d35ba66ca /sources/examples/ComputeServer.scala | |
parent | 103888d458fe8cc0ba7c8000c9e2b66923a1b430 (diff) | |
download | scala-5e87c33e2aaec7a0c9bcd6f257a9a8e4f9664529.tar.gz scala-5e87c33e2aaec7a0c9bcd6f257a9a8e4f9664529.tar.bz2 scala-5e87c33e2aaec7a0c9bcd6f257a9a8e4f9664529.zip |
- adapted to current Scala version
Diffstat (limited to 'sources/examples/ComputeServer.scala')
-rw-r--r-- | sources/examples/ComputeServer.scala | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sources/examples/ComputeServer.scala b/sources/examples/ComputeServer.scala index c3ea4907ad..034b996498 100644 --- a/sources/examples/ComputeServer.scala +++ b/sources/examples/ComputeServer.scala @@ -3,30 +3,40 @@ package examples; import concurrent._, concurrent.ops._; class ComputeServer(n: Int) { + private trait Job { type t; def task: t; - def return(x: t): Unit; + def ret(x: t): Unit; } private val openJobs = new Channel[Job](); private def processor(i: Int): Unit = { - while (True) { + while (true) { val job = openJobs.read; - job.return(job.task) + Console.println("read a job"); + job.ret(job.task) } } + def future[a](def p: a): () => a = { val reply = new SyncVar[a](); openJobs.write{ new Job { type t = a; def task = p; - def return(x: a) = reply.set(x); + def ret(x: a) = reply.set(x); } } () => reply.get } - replicate(1,n){processor} + + spawn(replicate(0, n) { processor }) +} + +object Test with Executable { + val server = new ComputeServer(1); + val f = server.future(42); + Console.println(f()) } |