/* * This file is part of the X10 project (http://x10-lang.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.opensource.org/licenses/eclipse-1.0.php * * (C) Copyright IBM Corporation 2010. */ /** A Cell which can be filled and emptied atomically */ class AtomicCell { var full : Boolean; var contents : Int; def this(init:Int) {full = true; contents = init;} def fill(newVal:Int) { when(!full) { full = true; contents = newVal; } } def empty(): Int { when(full) { full = false; return contents; } } public static def main(Array[String]){ val c = new AtomicCell[Int](0); finish { async { for( [i] in 1 .. 100) { c.fill(10*i); } } async { for( [j] in 1..100) { val v = c.empty(); Console.OUT.println("v=" + v); } } } } }