Avatar billede teutebod Nybegynder
27. juli 2004 - 13:22 Der er 4 kommentarer og
1 løsning

Klient liste til en netværks server

Jeg er ved at lave min første "multithreaded" netværks applikation. Jeg er lidt i tvivl om, hvordan man normalt opbevarer sin liste af connected klienter på serveren.

Min første tanke er lave en klasse som indeholder en public static HashTable. Denne table vil jeg så gerne have at mine tråde kan Add/Remove client objecter i. Disse add/remove metoder skal vel så have noget lock-værk for at sørge for at kun en enkelt tråd piller i listen af gangen?

Er min tankegang forkert, og er der bedre metoder at håndtere dette på?
Avatar billede arne_v Ekspert
27. juli 2004 - 13:27 #1
Det lyder meget fornuftigt. IP adresse som key måske. Hvis du laver en Hastable
og henter en ny Hashtable med Synchronized, så behøver du ikke slev bruge lock.
Avatar billede teutebod Nybegynder
27. juli 2004 - 14:31 #2
Jeg er ikke så stærk i det her, så jeg håber du lige har lyst til at checke om det her er fornuftigt. Det ser umiddelbart ud til at virke, men er jo svært at checke thread-safety.

public class ClientList
{
    private static Hashtable mhashClients = new Hashtable();

    public ClientList() {}

    public static void AddClient(Client objClient)
    {
        if(!mhashClients.ContainsKey(objClient.WindowsLogin))
        {
            Hashtable.Synchronized(mhashClients).Add(objClient.WindowsLogin, objClient);
        }
    }

    public static Client GetClient(string strWindowsLogin)
    {
        return (Client)mhashClients[strWindowsLogin];
    }
}

Findes der en god fremgangsmåde til, at checke ens applikation for samtidigheds problemer i forbindelse med tråde?

Læg et svar for points :)
Avatar billede arne_v Ekspert
27. juli 2004 - 15:45 #3
Jeg ville nok gemme en reference til den synkroniserede version.

Lige netop den her er nok meget svær at teste for, fordi sandsyneligheden
for at få en fejl er ret lille og den også er meget svær at fremtvinge
bevidst.

Hvis den kan fremtvinges bevidst er det jo nemt.

Hvis sandsyneligheden er stor, så er det bare X tråde og Y forsøg og
test for fejl.
Avatar billede arne_v Ekspert
27. juli 2004 - 15:46 #4
svar
Avatar billede teutebod Nybegynder
27. juli 2004 - 15:59 #5
Takker
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