Thread.Plan Concurrent Module CheckIt { Flush ' empty stack of values Data "Enjoy", "Rosetta", "Code" For i=1 to 3 { Thread { Print A$ Thread This Erase } As K Read M$ Thread K Execute Static A$=M$ Thread K Interval Random(500,1000) Threads } Rem : Wait 3000 ' we can use just a wait loop, or the main.task loop ' main.task exit if all threads erased Main.Task 30 { } ' when module exit all threads from this module get a signal to stop. ' we can use Threads Erase to erase all threads. ' Also if we press Esc we do the same } CheckIt ' we can define again the module, and now we get three time each name, but not every time three same names. ' if we change to Threads.Plan Sequential we get always the three same names ' Also in concurrent plan we can use a block to ensure that statements run without other thread executed in parallel. Module CheckIt { Flush ' empty stack of values Data "Enjoy", "Rosetta", "Code" For i=1 to 3 { Thread { Print A$ Print A$ Print A$ Thread This Erase } As K Read M$ Thread K Execute Static A$=M$ Thread K Interval Random(500,530) Threads } Rem : Wait 3000 ' we can use just a wait loop, or the main.task loop ' main.task exit if all threads erased Main.Task 30 { } ' when module exit all threads from this module get a signal to stop. ' we can use Threads Erase to erase all threads. ' Also if we press Esc we do the same } CheckIt