Prvý návrh architektúry:

Použitie spájaného zoznamu s význačními miestami na urýchlenie zvonenia budíka. Význačné miesta by bol nadzoznam, ktorý by delil celý zoznam na kratšie úseky pričom by chcel byť čo najkratší. Presné parametre by boli otázkou testovania a konfigurácie. Ten by mal za úlohu zrýchlenie pridávania do spájaného zoznamu.

Algoritmus by vyzeral nasledovne:

While(true){

Vypočítaj timelimit pre select, tak aby mal skončiť práve, keď ma zvoniť budík/tiknúť čas

Select čakajúci nad stdin s timoutom nastaveným tak, aby skončil práve keď ma nasledujúci budík zazvoniť alebo keď majú tiknúť hodiny

Ak select vrátil že je možné citát, čítaj { Ak načítal budík, ktorý je v minulosti zazvoň ho hneď a nepridávaj do zoznamu.

Ak načítal budík v buducnoti, pridaj ho do zoznamu

}

ELSE (uplynul time limit){

CASE Zazvon budik – zazvoni budik a vypise o tom info, posunie prvy prvok v spajanom zozname

CASE tikni čas - tikne čas

}
}