diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2005-12-16 18:44:33 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2005-12-16 18:44:33 +0000 |
commit | 53a3cc7b17f4cf97075b7e71720777fd84109696 (patch) | |
tree | 0cc784e0b47ea49cc151a136d19f20bfa8ee2197 /docs/examples/jolib/parallelOr.scala | |
parent | df50e05006b43b007c2587549030d24b5c154398 (diff) | |
download | scala-53a3cc7b17f4cf97075b7e71720777fd84109696.tar.gz scala-53a3cc7b17f4cf97075b7e71720777fd84109696.tar.bz2 scala-53a3cc7b17f4cf97075b7e71720777fd84109696.zip |
Created proper 'docs' folder for new layout.
Diffstat (limited to 'docs/examples/jolib/parallelOr.scala')
-rw-r--r-- | docs/examples/jolib/parallelOr.scala | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/examples/jolib/parallelOr.scala b/docs/examples/jolib/parallelOr.scala new file mode 100644 index 0000000000..bff4dcd87a --- /dev/null +++ b/docs/examples/jolib/parallelOr.scala @@ -0,0 +1,59 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +** $Id$ +\* */ + +package examples.jolib; +/* +import concurrent.jolib._; +import concurrent.SyncVar; + +/** Implementation in the join-calculus of a parallel OR. */ +object or extends Join { + + object res extends Synchr[boolean](this) { case class C() extends SyncVar[boolean] }; + object res1 extends Asynchr(this) { case class C(b: boolean); } + object res2 extends Asynchr(this) { case class C(b: boolean); } + object res1False extends Synchr[boolean](this) { case class C() extends SyncVar[boolean] }; + object res2False extends Synchr[boolean](this) { case class C() extends SyncVar[boolean] }; + + rules( + Pair(List(res, res1), { case List(r @ res.C(), res1.C(b)) => + if (b) r.set(b) else r.set(res1False(res1False.C())) }), + + Pair(List(res, res2), { case List(r @ res.C(), res2.C(b)) => + if (b) r.set(b) else r.set(res2False(res2False.C())) }), + + Pair(List(res1False, res2), { case List(r @ res1False.C(), res2.C(b)) => + r.set(b) }), + + Pair(List(res2False, res1), { case List(r @ res2False.C(), res1.C(b)) => + r.set(b) }) + ); + + def apply(b1: => boolean, b2: => boolean): boolean = { + concurrent.ops.spawn(res1(res1.C(b1))); + concurrent.ops.spawn(res2(res2.C(b2))); + res(res.C()) + } +} +*/ +object parallelOr { + + def main(args: Array[String]): unit = { + def loop: boolean = { while (true) {}; true }; +/* + System.out.println("true || true = " + or(true, true)); + System.out.println("false || false = " + or(false, false)); + System.out.println("false || true = " + or(false, true)); + System.out.println("true || false = " + or(true, false)); + System.out.println("true || loop = " + or(true, loop)); + System.out.println("loop || true = " + or(loop, true)); +*/ + } + +} |