53 lines
1.7 KiB
Plaintext
53 lines
1.7 KiB
Plaintext
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
|