summaryrefslogtreecommitdiff
path: root/sources/examples/ComputeServer.scala
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2003-12-08 16:17:42 +0000
committermichelou <michelou@epfl.ch>2003-12-08 16:17:42 +0000
commit5e87c33e2aaec7a0c9bcd6f257a9a8e4f9664529 (patch)
tree941571431fef1a7273ea82fa2475b99d35ba66ca /sources/examples/ComputeServer.scala
parent103888d458fe8cc0ba7c8000c9e2b66923a1b430 (diff)
downloadscala-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.scala20
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())
}