000
14.12.2009, 12:10 Uhr
cmos
|
Hallo, ich habe eine Frage bezüglich CSingleLock und dem CMutex.
Ich habe eine Klasse die eine statische Methode enthält die in einem Threadläuft, also die ThreadProc sozusagen. Ich habe zwei Klassenmember vom Typ CMutex um einen Lesezugriff zu synchronisieren, da ich innerhalb des Threads lesen möchte und auch außerhalb. Resourcenbedingt darf immer nur einer Lesen. Wenn ich außerhalb des Threads schreibe darf innerhalb des Threads auch ersteinmal nicht gelesen werden.
Meine Write - Methode sieht in etwa so aus
Code: |
Write(char* pszBuffer) { CSingleLock WriteLock(&m_hWriteMutex);
WriteLock.Lock(); //schreiben WriteLock.UnLock(); }
|
In der Thread Funktion steht dann in etwa
Code: |
static UINT ThreadProc(LPVOID lParam) { CSingleLock WriteLock(&m_hWriteMutex);
if(!WriteLock.IsLocked) { //Lesen } }
|
Meien frage ist, geht das überhaupt so. Bezieht sich der Aufruf von CSingleLock WriteLock(&m_hWriteMutex) jedesmal auf mein WriteMutex und erhält es da den aktuellen Wert oder sind das jedesmal einzelne Sachen für sich ?
Eigentlich sollte sich das doch immer auf das Eine Mutex beziehen. Aber bei mir scheint es so, das es jedesmal was eigenständiges ist. Denn ich habe einfach mal das WriteMutex gelocked und danach Write() aufgerufen. Aber es wird trotzdem geschrieben.
Erzeugte Events kann ich z.B. an anderen Stellen mit OpenEvent öffnen.
Was mache ich hier falsch ?
Grüße, cmos |