26. april 2007 - 06:57Der er
2 kommentarer og 1 løsning
samtidigheds problemer på Hashtable
Hejsa
Jeg har en del bøvl med samtidighed når flere tråde skal tilgå den samme hashtable, jeg er 120% sikker på at objecterne i min hashtable er forskellige men en gang imellem sker det jeg får det samme object i 2 forskellige tråde hvilket jo ikke var meningen, håber nogen kan se min tanketorsk.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Når du laver en synkroniseret hashtabel, sørger du blodt for, at hver methode ikke bliver eksikverede samtidig.
I din kode har du en tråd for hver entry i din hashtabel, og jeg er sikker på at du ikke får flere tråde en der er entries i din table. Er det rigtigt ?
Dog overfører du parameteret "entry" i din anonyme delegate, som er et object. Adgangen til dette objekt er ikke synkrokoseret, så hvis tråden ikke starter efter at "foreach" løkken er kommet til næste punkt, vil du få vist det næste objekt i rækken. (husker jeg min teori rigtigt)
Prøv og lav nogle "Assert" for at finde ud af om mine påstande er rigtige.
du har så ganske ret i at der kun oprettes lige så mange tråde som der er key,value par i min hashtable, og kan entlig også godt følge din logik i at selve object tilgangen ikke er synkroniseret, spørgsmålet er så bare hvordan løses det, mit umiddelbare gæt ville være at lave en lock(tmp.SyncRoot) lige inden min foreach løkke men er langt fra sikker
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.