11. december 2003 - 23:07Der er
10 kommentarer og 1 løsning
Hvilke tråde kører der inde bagved?
Jeg har en mængde aspx-sider og en mængde klasser inde bagved med noget funktionalitet, som kan kaldes af alle aspx-siderne.
Hvis der er mange brugere der benytter websiderne samtidig, og laver en masse kald samtidig, bliver det hele så håndteret af én tråd eller mange tråde? Skal jeg selv tråde klasserne så de kan håndtere flere samtidige kald?
Jeg ved ikke noget specifikt om IIS og ASP.NET, men hvis vi nu antager at den er nogenlunde fonuftigt lavet så processer den hver request i sin egen tråd. Det er eneste måde at få anstændig performance på. Det betyder at dine utility klasser skal være thread safe ellers kan det gå galt.
Om den genbruger tråde og om der er et maksimum på antal tråde ved jeg ikke.
Efter tests konkluderer jeg at der _ikke_ er nogen trådning indbygget. Hvis jeg kalder en metode der tager 5 sekunder, fra to forskellige browservinduer samtidig går der 5 sekunder inden den første er færdig og 10 sekunder inden den anden er færdig ...
Det er uanset om jeg kalder statiske metoder eller ej.
Microsoft har godt nok lavet en pæn ThreadPool til mig, som jeg kan bruge - men jeg føler mig ikke forkælet. Man kan kun sende et object med i de metoder man kalder gennem den ThreadPool. Det er såmænd dækkende nok, men det provokerer nok en del snørkle-fejl.
Jeg er på nippet til at lukke spørgsmålet igen. Tak for input, arne ...
Microsoft skriver selv om Threading, i en artikel om forskelle på ColdFusion og ASP.NET:
Fully supported. Not only do simultaneous page requests happen in separate threads, but also each page can (if needed) spawn its own threads to perform simultaneous or asynchronous work.
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.