Avatar billede tetrix Nybegynder
15. juni 2010 - 16:08 Der er 5 kommentarer og
1 løsning

Packets stacker/står i kø

Hej,

Jeg har en meget simpel server i C# der hovedsageligt består af en TcpListener og StreamReader. Til at håndtere indkommende packets, gør jeg følgende.

string ln;
while ((ln = sr.ReadLine()) != null)
{
handlePacket(ln);
}

Men når så en packet tager længere tid end de andre, bliver der en form for kø, og det vil jeg gerne undgå.

Nogle forslag?

Mange tak.
Avatar billede arne_v Ekspert
15. juni 2010 - 16:21 #1
Put linierne i en Queue<string> i loekken og lad en anden traad laese fra den og processe.
Avatar billede arne_v Ekspert
15. juni 2010 - 16:21 #2
Maaske flere traade.
Avatar billede tetrix Nybegynder
15. juni 2010 - 16:26 #3
Har forsøgt mig med at lave en tråd for hver handle, selvom det nok ikke er så smart, men det virkede ikke.

- Og hvis jeg tilføjer packets til et array og får en anden tråd til at læse, så skal den anden tråd jo også loope igennem, hvilket igen skaber en kø, right?
Avatar billede arne_v Ekspert
16. juni 2010 - 01:11 #4
Hvis boget tager X tid at processe, saa tager det jo X tid.

Du kan fjerne det fra socketen saa der ikke er problemer med buffersize der.

Du kan koere et antal traade for at udnytte din CPU kerner.

Men det er saa det.
Avatar billede arne_v Ekspert
04. juli 2010 - 03:13 #5
OK ?
Avatar billede arne_v Ekspert
25. juli 2010 - 22:59 #6
?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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