--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/Concurrent/volatile.scala Sat Aug 28 17:20:53 2010 +0200
@@ -0,0 +1,22 @@
+/* Title: Pure/Concurrent/volatile.scala
+ Author: Makarius
+
+Volatile variables.
+*/
+
+package isabelle
+
+
+class Volatile[A](init: A)
+{
+ @volatile private var state: A = init
+ def peek(): A = state
+ def change(f: A => A) { state = f(state) }
+ def change_yield[B](f: A => (B, A)): B =
+ {
+ val (result, new_state) = f(state)
+ state = new_state
+ result
+ }
+}
+