Co-operative Tasks
class Task {
virtual void Run() = 0;
};
class Renderer : public Task {
void Run(float time);
};
class TaskManager {
void RunTasks();
void AddTask(Task*);
};
void TaskManager::RunTasks() {
foreach(task)
task->Run();
}