src/Pure/library.scala
changeset 38258 dd7dcb9b2637
parent 38232 00b72526dc64
child 38583 ff7f9510b0d6
--- a/src/Pure/library.scala	Tue Aug 10 12:08:24 2010 +0200
+++ b/src/Pure/library.scala	Tue Aug 10 12:09:53 2010 +0200
@@ -6,11 +6,12 @@
 
 package isabelle
 
-import java.lang.System
+
+import java.lang.{System, Thread}
 import java.awt.Component
 import javax.swing.JOptionPane
 
-
+import scala.actors.Actor
 import scala.swing.ComboBox
 import scala.swing.event.SelectionChanged
 
@@ -138,4 +139,15 @@
         ((stop - start).toDouble / 1000000) + "ms elapsed time")
     Exn.release(result)
   }
+
+
+  /* thread as actor */
+
+  def thread_actor(name: String)(body: => Unit): Actor =
+  {
+    val actor = Future.promise[Actor]
+    val thread = new Thread(name) { override def run() = { actor.fulfill(Actor.self); body } }
+    thread.start
+    actor.join
+  }
 }