[OSy] mutexy

Vladislav Kozák dado at kozak.sk
Wed Oct 31 19:30:17 CET 2007


Dobry vecer,

mam drobne problemy s pochopenim funkcie mutexov (hlavne  
mutex_lock_timeout) tak ako su popisane v zadani.

Povedzme, ze vlakno A zamklo mutex a do fronty cakatelov sa zaradili  
vlakna B,C,D (pricom C bude cakat iba 100ms). Po 50ms vlakno A odomkne  
dany mutex (co podla zadania znamena, ze vlakna B,C,D sa zobudia a zacnu  
bojovat o to, ktore z nich prve zamkne mutex). Nie je mi dost jasne, ako  
dokazeme zistit, ci to dane vlakno stihne este zamknut.

Specialne teda: niekde v kode funkcie mutex_lock_timeout sa vola  
thread_sleep(usec). Za tento prikaz sa dostane vlakno po tom, co vyprsi  
cas, alebo doslo k mutex_unlock. Ak vyprsal cas, je jasne, ze vratime  
ETIMEDOUT. Ak ale este nevyprsal, nedokazeme podla mna rozhodnut v danom  
volani funkcie mutex_lock_timeout, ci to este to vlakno stihne, a teda ani  
rozhodnut aku navratovu hodnotu ma mat funkcia...

... alebo som to pochopil zle?




More information about the NSWI004 mailing list