diff options
Diffstat (limited to 'docs/examples/boundedbuffer.scala')
-rw-r--r-- | docs/examples/boundedbuffer.scala | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/docs/examples/boundedbuffer.scala b/docs/examples/boundedbuffer.scala deleted file mode 100644 index 359bfd8d06..0000000000 --- a/docs/examples/boundedbuffer.scala +++ /dev/null @@ -1,46 +0,0 @@ -package examples - -object boundedbuffer { - - import concurrent.ops._ - - class BoundedBuffer[A](N: Int)(implicit m: ClassManifest[A]) { - var in, out, n = 0 - val elems = new Array[A](N) - - def await(cond: => Boolean) = while (!cond) { wait() } - - def put(x: A) = synchronized { - await (n < N) - elems(in) = x; in = (in + 1) % N; n += 1 - if (n == 1) notifyAll() - } - - def get: A = synchronized { - await (n != 0) - val x = elems(out); out = (out + 1) % N ; n -= 1 - if (n == N - 1) notifyAll() - x - } - } - - def kill(delay: Int) = new java.util.Timer().schedule( - new java.util.TimerTask { - override def run() = { - println("[killed]") - System.exit(0) - } - }, - delay) // in milliseconds - - def main(args: Array[String]) { - val buf = new BoundedBuffer[String](10) - var cnt = 0 - def produceString = { cnt += 1; cnt.toString() } - def consumeString(ss: String) = println(ss) - spawn { while (true) { val ssss = produceString; buf.put(ssss) } } - spawn { while (true) { val s = buf.get; consumeString(s) } } - kill(1000) - } - -} |