27. juli 2004 - 13:22Der 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å?
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.
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();
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.
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.