Commit 8997af62 authored by sof's avatar sof
Browse files

[project @ 1999-05-13 13:08:24 by sof]

Added documentation for (yield :: IO ())
parent 40fc171e
......@@ -3,7 +3,8 @@
This library provides the Concurrent Haskell extensions as described
in <url name="Concurrent Haskell" url="">.
in <url name="Concurrent Haskell"
module Concurrent where
......@@ -15,6 +16,7 @@ instance Ord ThreadId
forkIO :: IO () -> IO ThreadId
myThreadId :: IO ThreadId
killThread :: ThreadId -> IO ()
yield :: IO ()
data MVar a -- Synchronisation variables
newEmptyMVar :: IO (MVar a)
......@@ -71,8 +73,7 @@ Notes:
Hugs uses cooperative multitasking:
Context switches only occur when you use one of the primitives
defined in this module. This means that programs such as:
s not been implemented yet on
main = forkIO (write 'a') >> write 'b'
where write c = putChar c >> write c
......@@ -84,6 +85,12 @@ main = forkIO (write 'a') >> write 'b'
In practice, cooperative multitasking is sufficient for writing
simple graphical user interfaces.
The <tt>yield</tt> action forces a context-switch to any other
currently runnable threads (if any), and is occasionally useful when
implementing concurrency abstractions (especially so if the
implementation of Concurrent Haskell uses cooperative multitasking).
Hugs does not provide the functions <tt/mergeIO/ or <tt/nmergeIO/ since these
require preemptive multitasking.
......@@ -118,4 +125,6 @@ status of the variable.
The same proviso applies to <tt/isEmptyChan/.
These two predicates are currently only supported by GHC.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment