|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor:
![]() |
![]() |
|
Alati teme | Način prikaza |
|
![]() |
#1 |
član
Na probnom radu
Datum učlanjenja: 17.11.2007
Poruke: 36
Hvala: 4
0 "Hvala" u 0 poruka
![]() |
![]() Pozdrav svima!
Napravio sam program u C-u, koji kreira oko 1000 thread-ova gdje svaki thread izvrsava odredjene operacije. Podatke na kojima ce raditi proslijedjuje im glavni program, prilikom kreiranja svakog thread-a. To sve super radi, ali sada bih trebao upisati rezultate thih operacija u bazu. Da svaki thread direktno upisuje, to bi onda bilo previse koneckija...pa sam razmisljao da napravim jos jedan koji bi samo primao rezultate od ovih 1000 i upisivao u bazu. Za komunikaciju izmedju thread-a koji upisuje u bazu i ostalih 1000 threadova planirao sam da iskoristim pipe. Sta mislite, da li je ovo dobro rjesenje? |
![]() |
![]() |
![]() |
#2 |
novi klan
Professional
Datum učlanjenja: 03.02.2007
Poruke: 326
Hvala: 43
427 "Hvala" u 50 poruka
![]() ![]() ![]() ![]() ![]() |
![]() a ne mozes da koristis jednu globalnu konekciju, a da pristup kontrolises nekim mutexom?
mozda sam nesto propustio, napamet pricam, ali nekako mi deluje cistije da svaki thread zavrsi svoj posao...
__________________
We professional we dealin' with business |
![]() |
![]() |
![]() |
#3 | |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
![]() ![]() ![]() |
![]() Citat:
sa jos jednim posebnim thread-om samo bi mu tovarili podatke i isli dalje... mada..... ako thread ne sme dalje pre nego sto se podatak upise, onda ipak mutex, i bez potrebe za posebnim threadom ![]() |
|
![]() |
![]() |
![]() |
#4 |
član
Na probnom radu
Datum učlanjenja: 17.11.2007
Poruke: 36
Hvala: 4
0 "Hvala" u 0 poruka
![]() |
![]() 1000 thread-ova mi radi bez problema, kada su kreirani nisu idle...svi imaju odredjeni posao koji izvrsavaju. Kada zavrse, setuju odredjenu vrijednost u globalni niz, tako da glavni scheduler zna koji je zavrsio, a koji nije.
(Ovo za sada dobro radi, ali postoji problem ako se thread prestane izvrsavati na sredini, pa ne setuje tu vrijednost da je posao zavrsen. Onda glavni scheduler moze da misli da je thread i dalje aktivan) Sto se tice komunikacije izmedju 1000 thread-ova i thread-a upisivac u bazu... sta mislite, da li je pipe dobra opcija? |
![]() |
![]() |
![]() |
#5 |
Dejan Grujic
Professional
Datum učlanjenja: 29.09.2005
Poruke: 380
Hvala: 9
64 "Hvala" u 40 poruka
![]() |
![]() Verovatno će ti se pokazati da je 1000 threadova previše - u zavisnosti koliko su CPU intenzivni context switching može da ti pojede svo vreme i da ništa ne ostane za same threadove. Razmišljaj u pravcu da smanjiš broj threadova na par desetina, i da imaš neki thread pool u koji će se vraćati kad su neaktivni, da se ne bi kreirali svaki čas.
|
![]() |
![]() |
![]() |
#6 |
Ivan Dilber
Sir Write-a-Lot
|
![]() ^slazem se, ne vidim nikakav smisao u 1000 threadova, sem ako su idle veci deo vremena..
u svakom slucaju nije losa ideja imati jedan thread koji pise u bazu, time dobijas asinhroni rad (workeri ne moraju da cekaju na operacije u bazi, samo predaju podatke i idu dalje), a i moguce je odraditi neku optimizaciju upisa gomile podataka, zavisno koju bazu koristis..
__________________
Leadership is the art of getting people to want to do what you know must be done. |
![]() |
![]() |
![]() |
Alati teme | |
Način prikaza | |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
POSIX thread-ovi | orangem | Sva početnička pitanja | 2 | 29. 08. 2008. 23:36 |