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
