#include #include #include Duration default_preemption() { return 0; } thread fast_sleeper {}; void main(fast_sleeper &) { Duration wait = 47`ms; for(i; 20) { sleep(wait); sout | acquire | "fast loop" | ((1 + i) * wait); } } thread slow_sleeper {}; void main(slow_sleeper &) { Duration wait = 277`ms; for(i; 4) { sleep(wait); sout | acquire | "slow loop" | ((1 + i) * wait); } } int main() { sout | acquire | "start"; { slow_sleeper slow; yield(); fast_sleeper fast; yield(); } sout | acquire | "done"; }