next up previous contents index
Next: Ostatní funkce Up: Implementace Previous: ``Vary features''

``Úklid''

Úklid bucketů od ``přestárlých'' záznamů je prováděn samostantým threadem, ve kterém je spuštěna funkce:

void sg_cleaner(void);
a který je inicializován ve funkci sg_init.

Tento děj probíhá opakovaně ve dvou fázích:

1.
Čistící cyklus, při kterém jsou sekvenčně procházeny všechny záznamy, kdy u každého je zjištěn jaký čas uplynul od posledního přístupu a pokud tato hodnota překročí hodnotu určenou sg_entry_max_age * sg_cleaner_agefactor (oba parametry jsou konfigurovatelné), pak je zkoumaný záznam smazán. Součástí této fáze je také spočtení aktuální velikosti a počet záznamů v každém bucketu.
2.
Po skončení čistícího cyklu thread čeká dobu sg_cleaner_cycle (také konfigurovatelné), poté je opět aktivován čistící cyklus.
V každé fázi thread kontroluje globální proměnnou pet.shutdown, která signalizuje, že má okamžitě ukončit svou funkci.



Stanislav Pavlicek
2000-06-12