| ??? 09/24/08 08:59 Read: times |
#158570 - statemachine Responding to: ???'s previous message |
What usually goes hand-in-hand with a super-loop is the notion of state-machines. Every 'thread' in your mindset can be implemented as a state-machine. And all state-machines are called sequentially in the super-loop. Obviously the state-machines may not lock up. Together they perform a form of cooperative multitasking.
enum Tstate {IDLE, ACTIVE};
void task1(void)
{
static enum Tstate state = 0;
// Any 'while' statement in here could possibly cause a lock-up!
switch (state)
{
case IDLE:
if (key==1)
state = ACTIVE;
break;
case ACTIVE:
if (key==2)
state = IDLE;
break;
}
}
void main(void)
{
while (1)
{
task1();
task2();
}
}Maarten |
| Topic | Author | Date |
| Multi Threading in C for 89S8253 | 01/01/70 00:00 | |
| effective? | 01/01/70 00:00 | |
| Protothreads | 01/01/70 00:00 | |
| What do you mean? | 01/01/70 00:00 | |
| What actually you are looking for | 01/01/70 00:00 | |
| Seek Help ! for Serial Communication | 01/01/70 00:00 | |
| start a new thread | 01/01/70 00:00 | |
| Good reply... | 01/01/70 00:00 | |
| hehe... | 01/01/70 00:00 | |
| purpose | 01/01/70 00:00 | |
| What tasks? | 01/01/70 00:00 | |
| tasks | 01/01/70 00:00 | |
| Superloop | 01/01/70 00:00 | |
| ok...one more thing | 01/01/70 00:00 | |
| If Key == '1' Then | 01/01/70 00:00 | |
| statemachine | 01/01/70 00:00 | |
| An alternative | 01/01/70 00:00 | |
| why not in FAQ or personal page? | 01/01/70 00:00 | |
| Yes | 01/01/70 00:00 | |
| An alternative ? | 01/01/70 00:00 | |
| Your Mileage May Vary | 01/01/70 00:00 | |
thanks alot | 01/01/70 00:00 |



