src/Pure/Concurrent/simple_thread.scala
changeset 38636 b7647ca7de5a
child 38638 94ed0f34aea2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/Concurrent/simple_thread.scala	Mon Aug 23 16:07:18 2010 +0200
@@ -0,0 +1,36 @@
+/*  Title:      Pure/Concurrent/simple_thread.scala
+    Author:     Makarius
+
+Simplified thread operations.
+*/
+
+package isabelle
+
+
+import java.lang.Thread
+
+import scala.actors.Actor
+
+
+object Simple_Thread
+{
+  /* plain thread */
+
+  def fork(name: String)(body: => Unit): Thread =
+  {
+    val thread = new Thread(name) { override def run = body }
+    thread.start
+    thread
+  }
+
+
+  /* thread as actor */
+
+  def actor(name: String)(body: => Unit): Actor =
+  {
+    val actor = Future.promise[Actor]
+    val thread = fork(name) { actor.fulfill(Actor.self); body }
+    actor.join
+  }
+}
+