Frage

ich einen großen Bestand an nativen Code bin zu verfeinern, die ein paar statischen kritischen Abschnitte verwendet und nie ruft DeleteCriticalSection , sie zu verarbeiten und verlassen sie aufzuräumen.

Es gibt keine Lecks und keine Sorgen über die Gesamtzahl der CS zu hoch wird, frage ich mich nur, ob es irgendwelche langfristigen Folgen von Windows nicht auf sie aufzuräumen. Wir haben Regressionstestsuiten, die ein Programm tausende Male pro Tag starten, obwohl Endanwender sind nicht geeignet, so etwas zu tun.

Aufgrund der Reichweite der eingesetzten Maschinen müssen wir auch Windows XP betrachten und dieser nativen Code aus einer verwalteten Anwendung ausgeführt werden.

War es hilfreich?

Lösung

ein kritischer Abschnitt ist nur ein Speicherblock, es sei denn Conten detektiert wird, zu welchem ??Zeitpunkt eines Ereignis-Objekt ist für die Synchronisation erzeugt. Prozess-Exit würde alle verbliebenen Ereignisse aufzuräumen. Wenn Sie diese zur Laufzeit dynamisch und nicht befreien sie kreierten, wäre es schlecht sein. Wenn die, die nicht aufgeräumt immer einen festen Betrag für jeden Prozess sind, würde ich nicht darum kümmern.

Im Prinzip wird jeder Prozess Ressource gereinigt, wenn der Prozess beendet wird. Kernel-Ressourcen wie Ereignisobjekte auf jeden Fall folgen diesem Prinzip.

Andere Tipps

Die kurze Antwort ist wahrscheinlich nicht. Die lange Antwort ist, ist dies ein fauler Programmierstil und fixiert werden soll.

So verwendet DeleteCriticalSection richtig, man braucht zum Herunterfahren in einer geordneten Art und Weise, so dass kein anderer Thread besitzt oder Versuche, den Abschnitt vor / zu besitzen, nachdem er gelöscht wird. Und Programmierer faul zu definieren und zu implementieren, wie Herunterfahren wird für ihr Programm arbeiten.

Es gibt viele Dinge, die man mit keinen unmittelbaren messbaren Konsequenzen tun können - aber das macht es nicht richtig machen. Auch ähnliche Haltung gegenüber anderen Griffen / Objekte in der gleichen Code-Basis kumulativen Effekt haben wird, und könnte auf „Folgen“ addieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top