diff options
Diffstat (limited to 'test/files/run/sync-var.scala')
-rw-r--r-- | test/files/run/sync-var.scala | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/test/files/run/sync-var.scala b/test/files/run/sync-var.scala deleted file mode 100644 index aa6ae9fa34..0000000000 --- a/test/files/run/sync-var.scala +++ /dev/null @@ -1,53 +0,0 @@ -import java.util.concurrent._ -import java.util.concurrent.atomic._ - -object Test { def main(args: Array[String]) { - -val n = 10000 -val i = new AtomicInteger(n) -val j = new AtomicInteger(n) -val sum = new AtomicInteger - -val q = new scala.concurrent.SyncVar[Int] - -val producers = (1 to 3).force map { z => new Thread { - override def run() { - var again = true - while (again) { - val x = i.getAndDecrement() - if (x > 0) - q put x - else - again = false - } - } -} } - -val summers = (1 to 7).force map { z => new Thread { - override def run() { - val x = j.decrementAndGet() - if (x >= 0) { - sum addAndGet q.take() - } - if (x > 0) { - run() - } else { - // done - } - } -} } - -summers foreach { _.start() } -producers foreach { _.start() } - -summers foreach { _.join() } - -val got = sum.get -val expected = (n + 1) * n / 2 -println(got + " " + expected + " " + (got == expected)) - -producers foreach { _.join() } - -} } - -// vim: set ts=2 sw=2 et: |