Avatar billede ibleif Nybegynder
24. marts 2005 - 19:32 Der er 12 kommentarer og
3 løsninger

New thread / Threadpool

Hejsa alle!

Jeg har en applikation der skal køre en række "små" jobs, som hver skal køres i en seperat tråd, og det er jo nemt lige at oprette en ny tråd hver gang et job kommer ind, lade tråden køre de 10 sekunder jobbet tager, og så bare dø.

Men er der nogen der ved hvor meget performance (hvis noget), der er at vinde ved at lave en threadpool og så genbruge trådene ?

// Ibleif
Avatar billede arne_v Ekspert
24. marts 2005 - 19:35 #1
Afhænger af hvor mange tråde du creater nu.

1 per minut => bedøvende ligegyldigt
100 per sekund => en thread pool lyder som en fremragende ide
Avatar billede burningice Nybegynder
24. marts 2005 - 19:42 #2
arne_v>>

:)

du kan da også sige tingene så det ikke er til at tage fej af ;)
Avatar billede ibleif Nybegynder
24. marts 2005 - 19:52 #3
Vi snakker måske 100 i minuttet... Som hver kører ca. 10 sekunder... ?

Jeres mening?

// Ibleif
Avatar billede arne_v Ekspert
24. marts 2005 - 19:57 #4
100/minut

Jeg ville nok bruge en thread pool så, men forvent ikke den store forskel
i performance
Avatar billede burningice Nybegynder
24. marts 2005 - 20:01 #5
eneste ulembe ved en threadpool er da vist at man ikke har mulighed for reference til/kontrol over tråden (bortset fra det object man har mulighed for at sende med ind i tråden). Hvis man ikke har brug for det, så er threadpool i næsten alle tilfælde at foretrække.
Avatar billede ibleif Nybegynder
24. marts 2005 - 21:15 #6
Ok.. tror ikke jeg gider skrive det om til en threadpool så. Takker for jeres svar. Lav et svar, så er der point.

Er nok også lidt svært at måle performance forskel på.

// Ibleif
Avatar billede burningice Nybegynder
24. marts 2005 - 21:50 #7
:) skrive det om? det er vel bare at skrive

ThreadPool.QueueUserWorkItem(new WaitCallback(dinMetode));

istedet for

Thread t = new Thread(new ThreadStart(dinMetode));
t.Start();
Avatar billede ibleif Nybegynder
24. marts 2005 - 22:55 #8
ahhh.. det er indbygget i .NET! Var jeg ikke klar over. Smart! :D

Troede jeg selv skulle lave det! Så er det nok værd at overveje alligevel.

// Ibleif
Avatar billede burningice Nybegynder
24. marts 2005 - 23:12 #9
:) .Net frameworket er slet ikke så dumt. Troede egentlig du var klar over den, siden du bragte en ThreadPool på banen.
Avatar billede md_craig Nybegynder
07. april 2005 - 12:04 #10
delegates kører også Pooled...

Der er PT plads til 25 Arbejdne tråde i .NET freamworket, dvs. at så længe du er under 25 tråde burde du ikke kunne se nogen desideret forskel... og det passer så ikke helt, for faktisk er det lidt tungere at starte en pooled thread freom for en dedikeret... så det giver faktisk performance tab... hvor meget det er ved jeg dog ikke...

når du når over 25 tråde bliver det jo afhængigt af om de arbejder på samme tid... (gør de formodentlig)... men så vil det teoretisk kunne måles...
Avatar billede mungojerrie Nybegynder
08. april 2005 - 11:49 #11
lytter lige med.....
Avatar billede ibleif Nybegynder
11. april 2005 - 14:57 #12
Tak for jeres input!

Folk der vil have point for at have deltaget... ja, de skal jo lige ligge et svar!

// Ibleif
Avatar billede burningice Nybegynder
11. april 2005 - 16:24 #13
svar
Avatar billede arne_v Ekspert
11. april 2005 - 16:35 #14
.
Avatar billede md_craig Nybegynder
11. april 2005 - 16:48 #15
oki
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester