/usr/share/doc/mlton/guide/ConcurrentML is in mlton-doc 20100608-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="robots" content="index,nofollow">
<title>ConcurrentML - MLton Standard ML Compiler (SML Compiler)</title>
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">
<link rel="Start" href="Home">
</head>
<body lang="en" dir="ltr">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-833377-1";
urchinTracker();
</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
border: 0px;
color: darkblue;
font-size: 150%;
text-align: left;">
<a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
<td style = "
border: 0px;
font-size: 150%;
text-align: center;
width: 50%;">
ConcurrentML
<td style = "
border: 0px;
text-align: right;">
<table cellspacing = 0 style = "border: 0px">
<tr style = "vertical-align: middle;">
</table>
<tr style = "background-color: white;">
<td colspan = 3
style = "
border: 0px;
font-size:70%;
text-align: right;">
<a href = "Home">Home</a>
<a href = "TitleIndex">Index</a>
</table>
<div id="content" lang="en" dir="ltr">
<a class="external" href="http://cml.cs.uchicago.edu/"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Concurrent ML</a> is an SML concurrency library based on synchronous message passing. MLton has an initial port of CML from SML/NJ, but is missing a thread-safe wrapper around the Basis Library and event-based equivalents to <tt>IO</tt> and <tt>OS</tt> functions. <p>
All of the core CML functionality is present.
</p>
<pre class=code>
<B><FONT COLOR="#0000FF">structure</FONT></B> CML: CML
<B><FONT COLOR="#0000FF">structure</FONT></B> SyncVar: SYNC_VAR
<B><FONT COLOR="#0000FF">structure</FONT></B> Mailbox: MAILBOX
<B><FONT COLOR="#0000FF">structure</FONT></B> Multicast: MULTICAST
<B><FONT COLOR="#0000FF">structure</FONT></B> SimpleRPC: SIMPLE_RPC
<B><FONT COLOR="#0000FF">structure</FONT></B> RunCML: RUN_CML
</PRE>
<p>
</p>
<p>
The <tt>RUN_CML</tt> signature is minimal.
<pre class=code>
<B><FONT COLOR="#0000FF">signature</FONT></B> RUN_CML =
<B><FONT COLOR="#0000FF">sig</FONT></B>
<B><FONT COLOR="#A020F0">val</FONT></B> isRunning: unit -> bool
<B><FONT COLOR="#A020F0">val</FONT></B> doit: (unit -> unit) * Time.time option -> OS.Process.status
<B><FONT COLOR="#A020F0">val</FONT></B> shutdown: OS.Process.status -> 'a
<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
MLton's <tt>RunCML</tt> structure does not include all of the cleanup and logging operations of SML/NJ's <tt>RunCML</tt> structure. However, the implementation does include the <tt>CML.timeOutEvt</tt> and <tt>CML.atTimeEvt</tt> functions, and a preemptive scheduler that knows to sleep when there are no ready threads and some threads blocked on time events.
</p>
<p>
Because MLton does not wrap the Basis Library for CML, the "right" way to call a Basis Library function that is stateful is to wrap the call with <tt>MLton.Thread.atomically</tt>.
</p>
<h2 id="head-0bb18642b70b9f8a9c12ccf39487328f306b8e19">Usage</h2>
<ul>
<li>
<p>
You can import the CML Library into an MLB file with:
<div>
<table>
<tr>
<td align="center">
MLB file</td>
<td align="center">
Description</td>
</tr>
<tr>
<td>
<tt>$(SML_LIB)/cml/cml.mlb</tt></td>
<td>
</td>
</tr>
</p>
</table>
</div>
</li>
<li class="gap">
<p>
If you are porting a project from SML/NJ's <a href="CompilationManager">CompilationManager</a> to MLton's <a href="MLBasis"> ML Basis system</a> using <tt>cm2mlb</tt>, note that the following map is included by default:
<pre>$cml/cml.cm $(SML_LIB)/cml/cml.mlb
</pre> This will automatically convert a <tt>$cml/cml.cm</tt> import in an input <tt>.cm</tt> file into a <tt>$(SML_LIB)/cml/cml.mlb</tt> import in the output <tt>.mlb</tt> file.
</p>
</li>
</ul>
<h2 id="head-a4bc8bf5caf54b18cea9f58e83dd4acb488deb17">Also see</h2>
<ul>
<li>
<p>
<a href="ConcurrentMLImplementation">ConcurrentMLImplementation</a>
</p>
</li>
<li>
<p>
<a href="eXene">eXene</a>
</p>
</li>
</ul>
</div>
<p>
<hr>
Last edited on 2007-08-23 17:24:44 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
|