[so] [Tema 4]Test3
VLAD TUDOSE
vlad_tudose at yahoo.com
Fri May 6 16:42:27 EEST 2011
Salut,
Am urmatoarea problema la testul 3: am un deadlock si am intels de ce imi apare
dar nu reusesc sa imi dau seama care ar trebui sa fie comportamentul normal.
Testul 3 porneste 4 threaduri care executa operatiile de mai jos,
thread-urile sunt pornite in ordinea 1,2,3,4.
Thread 1: Enter, Wait(1), sleep(1), ...
Thread 2: Enter, Wait(0), sleep(1), ...
Thread 3: sleep(1), Enter, sleep(2), Signal(1)...
Thread 4: sleep(2), Enter, sleep(1), ...
Comporamentul programului meu este urmatorul(in ordine cronologica a evenimentelor):
Thread-ul 1 intra in monitor il marcheaza ca fiind ocupat ,intra in Wait
nu are pe cine sa planifice declara monitorul liber si asteapta dupa variabila de cond 1.
Thread-ul 2 intra in monitor il gaseste liber , intra in Wait , nu are pe cine sa planifice
declara monitorul liber si asteapta dupa variabila de cond 2.
Thread-ul 3 intra in monitor il gaseste liber si intra in sleep(2).
Thread-ul 4 gaseste monitorul ocupat este pus in coada Entry unde asteapta sa fie planificat.
Thread-ul 3 iese din sleep face Signal(1) -> trece Thread-ul 1 in coada Waiting dupa care asteapta
in coada Signaler.
In acest moment toate thread-urile imi sunt blocate.
Poate sa ma lamureasca cineva ce e gresit in rationamentul meu ?
Multumesc,
Vlad
More information about the so
mailing list