[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