Busy-waiting-simple to write, but wastes time
while(1)
{
while (new_event = false) wait();
handle_next_event();
}
Polling-more efficient, but still wastes time polling I/O devices,users, etc.
while(1)
{begin(main_event)
handle main_event();
end(main_main_event)
while (next_port =true)
{poll_next_port();
if(new_event) handle_next_event();
}
}
Event-Driven-More complex to write, maintain, and diagnose, but more resource and time efficient.
Single server/Single-queue
while(1)
{if(new_event)
{getnextevent();
processnextevent();
}
else handle main_event();
}
Single server/Multiple-queue
while(1)
{if(new_event)
{select_next_event(); --priority-based
process_next_event();
}
else handle main_event();
}
Multiple server/Multiple-queue
while(1)
{if(new_event)
{select_next_queue();
select_next_event();
process_next_event();
}
else handle main_event();
}
|