<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
I think Saulo indeed managed to reverse engineer the correct answer,
and, to save future questioners from the same detective work, I've
added a description in Section 8.6 of the manual. (Its compiled PDF
version will go up on the web with the next Ur/Web release.)<br>
<br>
Thanks, Benjamin, for pointing out this documentation hole.<br>
<br>
<div class="moz-cite-prefix">On 08/21/2016 07:13 PM, Saulo Araujo
wrote:<br>
</div>
<blockquote
cite="mid:CA+ckhoR9FLKGMejHw=q-ZCvtzhji1hoyEs=0P+LyWKsqZ-DWag@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>Hi Benjamin,</div>
<div><br>
</div>
<div>I believe that, besides sleep, only the functions rpc and
recv also trigger context switches. If you look into the
source code of the Ur/Web JavaScript runtime (urweb.js), you
will see that there is a boolean variable called maySuspend,
which says when context switches are allowed and the only
functions that check the value of maySuspend are sl (sleep),
rc (rpc) and rc (recv).</div>
</div>
<div><br>
</div>
<div>Sincerely,</div>
<div>Saulo Araujo</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Sat, Aug 20, 2016 at 5:25 PM,
Benjamin Barenblat <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:bbaren@mit.edu"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:bbaren@mit.edu">bbaren@mit.edu</a></a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">The
threads demo* explains that ‘Ur/Web [client code] uses
cooperative<br>
multi-threading, not the more common preemptive
multi-threading. Only<br>
one thread runs at a time, and only particular function
calls can<br>
trigger context switches. In this example, sleep is the only
such<br>
function that appears.’ What other functions can trigger
context<br>
switches?<br>
<br>
* <a moz-do-not-send="true"
href="http://impredicative.com/ur/demo/threads.desc.html"
rel="noreferrer" target="_blank">http://impredicative.com/ur/<wbr>demo/threads.desc.html</a><br>
</blockquote>
</div>
</div>
</blockquote>
</body>
</html>