[OSy] thread_wakeup
Lukáš Turek
turek at ksvi.mff.cuni.cz
Thu Nov 9 23:03:25 CET 2006
On 9.11.2006 22:22, Tomas Tuma wrote:
> V nasem kernelu jsou vlakna uspana na synchronizacnich primitivech v
> suspended stavu a jsou probouzena pomoci thread_wakeup. Pokud by vsak
> thread_wakeup na takto uspane vlakno zavolal nekdo jiny nez je
> synchronizacni primitivum, nemelo by se podle meho nazoru takove vlakno
> probudit a volajicimu by se mela ohlasit nejaka chyba - vlakno je uspane,
> ale nechce byt vzbuzeno jinak nez samo ocekava.
Ja mam synchronizacni primitiva psana stylem
while(locked && !timeout)
sleep();
Takze je jedno kdo vlakno probudi, proste se znovu uspi.
Jediny rozdil je condition variable, ale tam podle me nevadi kdyz se vlakno
probudi predcasne, vzhledem ke zpusobu pouziti, ktery je podobny:
while(!podminka)
cond_wait(cvar, mtx);
Lukas
More information about the NSWI004
mailing list