Er zijn verschillende queues geimplementeerd, allen in C++. Voor zover ik kan zien
geen fancy automatisch switching tussen queue implementaties ofzo. De queue
kan gekozen worden met --SchedulerType=MyTypeId command line
switch, default is de std::map queue.
- Calendar Queue ( src/core/model/calendar-scheduler.{cc,h} ). Implementatie
van het originele "Calendar Queues: A Fast O(1) Priority Queue Implementation for
the Simulation Event Set Problem", Randy Brown met originele policy. Merk op: veel trager dan verwacht door de auteur, waarschijnlijk door slechte resizing policies. Een
stuk trager dan bv de std::map queue.
- Heap queue ( src/core/model/heap-scheduler.{cc,h} ).
Straightforward binaire heap.
- std::list queue ( src/core/model/list-scheduler.{cc,h} ).
Triviale implementatie.
- std::map queue ( src/core/model/map-scheduler.{cc,h} ).
Gebaseerd op een idee in de Georgia Tech Network Simulator (GTNetS). Dit
vereist wel dat er op de keys een absolute ordering zit (zonder
duplicates).
- NS-2 Calendar Queue (
src/core/model/ns2-calendar-scheduler.{cc,h} ). De NS-2 Calendar
Scheduler die iets vager is dan de NS-3 Scheduler.
- Realtime Scheduler (
src/core/model/realtime-simulator-impl.{cc,h} en
src/core/model/wall-clock-synchronizer.{cc,h} ). Zie
http://www.nsnam.org/docs/manual/html/realtime.html. Minder relevant voor
onze doeleinden afaik.
Geen opmerkingen:
Een reactie posten