CCriticalSection - DeadLock
-
Hallo,
folgendes Problem:
Ich habe mir eine eigene Klasse von CListCtrl abgeleitet, in der ich mit der Funktion AddLogInfo("Text") in einer ListCtrl den Text und ein paar weitere Daten einfüge.
Jetzt habe ich 2 Threads und das Hauptprogramm selbst. Alle 3 rufen AddLogInfo() auf, um die ihre Informationen in die ListCtrl zu schreiben.
Also habe ich eine globale Variable CCriticalSection critSect angelegt und habe denn gesamten Funktionsrumpf von AddLogInfo mit critSect.Lock() und critSect.Unlock() umklammert.
Das klappt soweit auch in einem relativ ruhigen Fall. Wenn aber massivst Daten in die ListCtrl geschoben werden, dann zauber ich mir wohl nen DeadLock.
Geh ich falsch an die Sache heran? Muss ich vielleicht nicht den Funktionsrumpf, sondern den Aufruf der Funktion selbst sperren? Oder muss ich eine ganz anderen Lösungsweg einschlagen?
Danke und Gruß
Chris
-
Ich vermute, dass der folgende Artikel die Ursache Deiner Probleme erläutert:
http://support.microsoft.com/default.aspx?scid=kb;en-us;147578