29. august 2006 - 23:57Der er
16 kommentarer og 1 løsning
Valg af synckroniseringen metode
Hejsa
Jeg har et spørgsmål angående hvilken c++ synckroniserings løsning der er bedst, nemmest at implementere (kender ikke så meget til windows synckronisering metoder, men jeg har rodet noget med Java metode (synchonized(this) {})).
Synckroniseringen skal kunne håndterer tre forskellige processer tilgår de kritiske data (både læse og skrive), via en delt klasse. De tre proceeser skal kunne kører samtidigt uden at der opstår race condition når den delte resource tilgås.
Jeg har kigge lidt på WaitForsingleObject eller Semaphore klassen.
ReleaseSemaphore frigiver den og man kan bruge en af de mange wait funktioner til at vente. Hvis man kun skal vente på den ene semaphore er WaitForSingleObject nok sagen.
hvis vi antager at det er java synchronized du søger, så er du all set uanset dll eller ej - dll er bare hvor noget kode befinder sig (ligesom jar i Java)
hvis det skal være mellem processer så skal det være Semaphore (eller Mutex)
ok, det skal ikke være mellem processer, blot beskytte en kritisk resource mod race condition fra to tråde samt fra værts programmet. Har hvert program der bruger en dll, ikke hvert sit område, der gemmer tilstanden af dll (variabler m.fl)???
ok, jeg har implementeret håndteringen af de to tråde med hvert deres event og så sørget for at den rigtige event bliver kaldt i SetEvent/WaitForSingleObject.
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.