( ; This example shows the use of critical sections. ; Set short timeslice (50us) to make the effect more pronounced (rt-opt RT_TIMESLICE 50) (spawn _ unsafe 'A' 'Z') (spawn _ unsafe 'a' 'z') (spawn _ safe '0' '9') ; Notice that the sequence 0-9 is always printed in its entirety - because it is in a critical section (msleep 200) (halt) (proc unsafe start end ; This can be interrupted any time (:x) (yield) (ld r0 start) (:l) (ld @cout r0) (cmp r0 end) (j.eq :x) (inc r0) (j :l) ) (proc safe start end (:again) (ld r0 start) ; The sequence will always be complete (crit (ld @cout ' ') ; space to make it easier to read (:l) (ld @cout r0) (cmp r0 end) (j.eq :x) (inc r0) (j :l) (:x) (ld @cout ' ') ; space to make it easier to read ) (yield) (j :again) ) )