Threadsichere Objekte ?
-
Hi,
In einem der vielen Thread Posts hier kommt von Unix Tom folgende Aussage:
Es gibt aber MFC-Klassen welche nicht Threadsicher sind. Schau dazu in der MSDN.
Ich verwende eine ListCtrl, die ich global gemacht habe und von zwei Threads
aus mit Daten fülle. Leider kapier ich nicht wo ich Hinweise in der MSDN zu
threadsicheren Klassen finde und ob diese Klasse threadsicher ist.
Desweiteren würde ich gerne mehr über die Einkapselung mit CCriticalSection
wissen. Werden bei:CCriticalSection cs; cs.Lock();
alle Threads pausiert, die etwas mit dem Hauptprogramm zu tun haben ?
Gruß
TheNoName
-
I.d.R. kann man sagen: Keine Instanzen von Klassen der MFC sind Thread-Sicher.
Du musst den Zugriff auf solche Instanzen durch eine CS sichern, d.h. bevor Du was machst ein "Enter" aufrufen und wenn Du fertig bist ein "Leave".
Wenn jetzt zur gleichen Zeit ein anderer Thread da was machen will, dann bleibt dieser so lange blokiert, bis der erste das Leave aufgeurfen hat.
-
thenoname schrieb:
Ich verwende eine ListCtrl, die ich global gemacht habe und von zwei Threads
aus mit Daten fülle. Leider kapier ich nicht wo ich Hinweise in der MSDN zu
threadsicheren Klassen finde und ob diese Klasse threadsicher ist.wenn du das listctrl nur mit postmessage oder sendmessage ansprichst, sollte das threadsicher sein. auf keinen fall sollte man member funktionen einer c++ klasse von verschiedenen threads aufrufen ohne locks (mutex, critical section oder sowas).
-
Sorry, wenn ich dann so frage:
Kann man mit Postmessage ein SetItemText und ein SetItemImage ausführen lassen ?
Und wie sieht es dann mit GetItemText aus ?
Hab ich leider noch nie gemachtAnsonsten danke für die kräftigen Aussagen, werd jetzt mit Mutex und CriticalS.
arbeiten ...Gruß
Thenoname