Hi Benjamin,

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).

Sincerely,
Saulo Araujo

On Sat, Aug 20, 2016 at 5:25 PM, Benjamin Barenblat <[email protected]> wrote:

> The threads demo* explains that ‘Ur/Web [client code] uses cooperative
> multi-threading, not the more common preemptive multi-threading. Only
> one thread runs at a time, and only particular function calls can
> trigger context switches. In this example, sleep is the only such
> function that appears.’ What other functions can trigger context
> switches?
>
> * http://impredicative.com/ur/demo/threads.desc.html
>
> _______________________________________________
> Ur mailing list
> [email protected]
> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
>
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to