[project @ 1999-07-06 15:24:01 by simonmar]
authorsimonmar <unknown>
Tue, 6 Jul 1999 15:24:01 +0000 (15:24 +0000)
committersimonmar <unknown>
Tue, 6 Jul 1999 15:24:01 +0000 (15:24 +0000)
Add a note about @raiseInThread@.

ghc/docs/users_guide/parallel.vsgml

index 05e74c1..a30120c 100644 (file)
@@ -85,6 +85,26 @@ isn't lost: the computation is suspended until required by another
 thread.  The memory used by the thread will be garbage collected if it
 isn't referenced from anywhere else.
 
+More generally, an arbitrary exception may be raised in any thread for
+which we have a <tt/ThreadId/, with <tt/raiseInThread/:
+
+<tscreen><verb>
+raiseInThread :: ThreadId -> Exception -> IO ()
+</verb></tscreen>
+
+Actually <tt/killThread/ just raises the <tt/ThreadKilled/ exception
+in the target thread, the normal action of which is to just terminate
+the thread.  The target thread will stop whatever it was doing (even
+if it was blocked on an <tt/MVar/ or other computation) and handle the
+exception.
+
+The <tt/ThreadId/ for the current thread can be obtained with
+<tt/myThreadId/:
+
+<tscreen><verb>
+myThreadId :: IO ThreadId
+</verb></tscreen>
+
 NOTE: if you have a @ThreadId@, you essentially have a pointer to the
 thread itself.  This means the thread itself can't be garbage
 collected until you drop the @ThreadId@.  This misfeature will