User`s manual

72 digi.com Multitasking with Dynamic C
5.9.5.1 Example 1
Two slice statements and a costatement will appear to run in parallel. Each block will run indepen-
dently, but the slice statement blocks will suspend their operation after 20 ticks for slice_a and 40
ticks for slice_b. Costate a will not release control until it either explicitly yields, aborts, or completes.
In contrast, slice_a will run for at most 20 ticks, then slice_b will begin running. Costate a will get
its next opportunity to run about 60 ticks after it relinquishes control.
5.9.5.2 Example 2
This code guarantees that the first slice starts on TICK_TIMER evenly divisible by 80 and the second
starts on TICK_TIMER evenly divisible by 105.
main () {
int x, y, z;
...
for (;;) {
costate a {
...
}
slice(500, 20) { // slice_a
...
}
slice(500, 40) { // slice_b
...
}
}
}
main() {
for(;;) {
costate {
slice(500,20) { // slice_a
waitfor(IntervalTick(80));
...
}
slice(500,50) { // slice_b
waitfor(IntervalTick(105);
...
}
}
}
}