Poslao: 26 Feb 2006 22:33
|
offline
- Pridružio: 03 Jan 2006
- Poruke: 37
|
Naslov sve kaze!Hvala na odgovorima,pozzzz
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 26 Feb 2006 22:36
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Koristim ih kad god je potrebno da se izvrsi neka dugotrajna operacija. Umesto da se korisniku zamrzne interfejs, thred jednostavno radi u pozadini, a korisnik na interfejsu ima obavestenje (vrti se sat ili nesto slicno) da se operacije vrse u pozadini.
U poslednje vreme thread-ove koristim za pisanje igara... mnogo je jednostavnije kada se, recimo, iscrtavanje i AI neprijatelja razdvoji u thread-ove.
|
|
|
|
|
Poslao: 26 Feb 2006 22:54
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Thread-ove je vrlo retko potrebno koristiti... ja sam ih do sad koristio u mozda 3-4 aplikacije, a napisao sam ih dosta. Thread u nekim situacijama moze biti vrlo koristan, dok ga je u drugim vrlo tesko koristiti.
Najveci problemi se desavaju prilikom sinhronizacije podataka... posto se thread-ovi izvrsavaju istovremeno moze se desiti da npr. dva ili vise thread-a pristupaju istoj promenljivoj... ako svi samo citaju podatke, tada nema problema, ali ako se desi da upisuju onda moze doci do korupcije podataka... npr. 2 thread-a koriste globalnu promenljivu Boja u kojoj cuvaju boju text-a za ispis. Prvi thread upisuje CRVENO i sprema se za ispis, ali pre nego sto pocne sa ispisom, drugi thread upise PLAVO i kada se text-ovi budu ispisali, i za jedan i za drugi thread ce biti plave boje.
Ovo je sitnica u poredjenju sa problemima koji mogu nastati kada thread-ovi kreiraju i oslobadjaju dinamicke promenljive... vrlo lako moze doci do access violation-a ili slicne greske.
Moj savet je da koristite thread-ove samo kada je to apsolutno potrebno... i nemojte kreirati mnogo thread-ova jer ce usporiti ceo operativni sistem.
Vise o thread-ovima mozete naci ovde.
|
|
|
|
|
Poslao: 26 Feb 2006 23:09
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Ja koristim semafore ili slicne trigere... kada neki od thread-ova treba da menja promenljivu postavi odgovarajuci semafor tako da drugi thread-ovi znaju da je ta promenljiva zauzeta i mogu da rade nesto drugo ako imaju ili da cekaju dok promenljiva ne bude slobodna.
Nikad nisam voleo critical section... ne svidja mi se ideja da mi se thread zakoci, a da ja za to ne znam
|
|
|
|
|
Poslao: 27 Feb 2006 02:14
|
offline
- Peca
- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23211
- Gde živiš: Niš
|
Srki_82 ::Nikad nisam voleo critical section... ne svidja mi se ideja da mi se thread zakoci, a da ja za to ne znam
TryEnterCriticalSection(&cs);
http://msdn.microsoft.com/library/en-us/dllproc/ba.....frame=true
The TryEnterCriticalSection function attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section.
If another thread already owns the critical section, the return value is zero.
|
|
|
|
Poslao: 27 Feb 2006 03:12
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Srki, klimav si sine za ozbiljne stvari. Ovo je iz najbolje namere. Nauchi thredove, zivot ce ti postati zanimljiviji, a i otvorice ti se vizija za nove stvari i ideje.
BTW, critical section je jedini nacin da ti aplikacije (ako nije single-threaded) bude thread-safe.
|
|
|
|
Poslao: 27 Feb 2006 08:21
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
@Peca
Nisam ni znao za tu funkciju, hvala
@beli0135
Citat:BTW, critical section je jedini nacin da ti aplikacije (ako nije single-threaded) bude thread-safe.
Mozda sam ja pogresno shvatio izraz "thread-safe"... isparvi me ako gresim... to znaci da se u aplikaciji ne desava da vise thread-ova pokusava da radi nesto s memorijim sto bi dovelo do korupcije podataka tj. da aplikacija koristi sinhronizaciju thread-ova?
Microsoft kaze critical section nije jedini nacin, kao sto ti kazes, da se to uradi:
http://msdn.microsoft.com/library/en-us/dllproc/ba.....hreads.asp
|
|
|
|