Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako izbjeci dead lock i starvation na konkretnom primjeru

[es] :: Java :: Kako izbjeci dead lock i starvation na konkretnom primjeru

[ Pregleda: 1659 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.teol.net.



+120 Profil

icon Kako izbjeci dead lock i starvation na konkretnom primjeru18.02.2009. u 00:23 - pre 184 meseci
Pozdrav svima.

Trenutno pravim jedan program, pa bih htio par savjeta od iskusnijih korisnika. Naime, u mom programu trenutno postoje 3 vazne komponente,

DrawingViewer, Model i Controler.

Model se sastoji od Slojeva, Sloj od Grupa, Grupa od Profila, a Profile od Oblika (Shape: Line, Arc, Ellipse)

Svaka ova klasa (Model, Layer, Group, Profile) implementira Collection interface.

DrawingViewer implementira interface Observer i na svaku promjenu u modelu, ponovo iscrtava model.

E sad, u jednom trenutku je potrebno izvrsiti provjeru ispravnosti modela, koje moze da traje i do nekoliko sekundi. Pri tome aplikacija mora da odgovora na akcije korisnika i da omoguci korisniku dodavanje novih Slojeva, Grupa, Profila itd. Razmisljao sam da tu provjeru uradim u jednoj posebnoj niti, medjutim ostaje sledeci problem: Ako ta nova nit koja vrsi provjeru modela zakljuca model, tada on nece biti dostupan komponenti DrawingViewer i uopste aplikaciji jer ce ta komponenta koja se vrti na event dispatching thread pokusati isto taj model da zakljuca i onda ce morati da ceka dok prva nit na kojoj se vrsi provjera modela ne zavrsi posao, iz cega proizilazi da ce se program ponasati isto kao da sam provjeru vrsio i na EDT.

Kakvu strategiju ovde primjeniti da bi se izbjeglo "gladovanje" ED niti?
...
 
Odgovor na temu

Chobicus
Pancevo

Član broj: 28286
Poruke: 135
*.mozzartbet.com.

ICQ: 31049018


+12 Profil

icon Re: Kako izbjeci dead lock i starvation na konkretnom primjeru18.02.2009. u 09:02 - pre 184 meseci
Ne znam zašto bi hteo da dozvoliš istovremenu validaciju i editovanje nekih objekata kad oni u svakom trenutku mogu promeniti validnost.
Po ovome što si napisao logično je da korisniku blokiraš rad ( http://java.sun.com/docs/books...swing/components/progress.html ) dok se ne odradi provera ispravnosti.
 
Odgovor na temu

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.teol.net.



+120 Profil

icon Re: Kako izbjeci dead lock i starvation na konkretnom primjeru18.02.2009. u 11:14 - pre 184 meseci
Hmmm, ideja za to mi je pala kada sam vidio da dok ja kuckam kod u NetBeans-u on u pozadini stalno taj fajl kompajlira i javlja mi greske.

Ok, mogu ja da blokiram izmjene na tome, ali sta ako kontrola dobije zahtjev za ponovnim iscrtavanjem. Tada ce pokusati da zakljuca model i opet imam isti problem.
...
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako izbjeci dead lock i starvation na konkretnom primjeru18.02.2009. u 12:35 - pre 184 meseci
Mislim da Netbeans ceka da ti pauziras par sekundi pre nego sto krene da analizira tvoj kod
 
Odgovor na temu

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.teol.net.



+120 Profil

icon Re: Kako izbjeci dead lock i starvation na konkretnom primjeru18.02.2009. u 13:52 - pre 184 meseci
Nebitno, princip je isti, jer u trenutku kad pocne kompaliranje i ja pocnem da kucam nastaje isti problem
...
 
Odgovor na temu

Chobicus
Pancevo

Član broj: 28286
Poruke: 135
*.mozzartbet.com.

ICQ: 31049018


+12 Profil

icon Re: Kako izbjeci dead lock i starvation na konkretnom primjeru19.02.2009. u 08:18 - pre 184 meseci
NetBeans, ako radi nešto u pozadini, radi na kodu koji ti ne menjaš. Kada prekineš kucanje može da pokrene proveru tvog novog koda.

Heh... Sad mi pade na pamet. Pa ovo liči na "readers-writers" problem u sinhronizaciji

Ti si "writer".
NetBeans je "reader".

 
Odgovor na temu

[es] :: Java :: Kako izbjeci dead lock i starvation na konkretnom primjeru

[ Pregleda: 1659 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.