Jen detail,
> Nicméně implementace těchto funkcí je velmi mizerná —
> nevytváří se žádná fronta procesů jako na Linuxu a funkce
> wakeup prochází všechny procesy v systému, aby zjistila,
> který na danou událost čeká.
Presneji (alespon na NetBSD) je to tak, ze system udrzuje
128 front, pri tsleep se cekajici proces zaradi do jedne z
nich podle identifikatoru. Takze se neprochazi vsechny
procesy v systemu, ale jen ty ktere spadly do stejne waitq
tridy. Da se to brat jako hasovaci tabulka podle identu.
> Procházení všech procesů je celkem náročná operace a v
> tomto případě je to zcela zbytečné
Zalezi na tom jak dobra je distribuce toho rozskakovaciho
makra. Nejaky seznam se bude prochazet tak jako tak, jen
tam obcas bude neco navic. Linuxova implementace (jedna
fronta na kazdy wait channel) je asi v zasade lepsi, s ltsleep/wakeup se zas dobre pracuje (staci znat identifikator) a vsechno je na jednom miste...