Wie der Name sagt, ist eine Critical Section ein kritischer Bereich in einem Programm. Das Konzept sieht vor, alle Zugriffe von verschiedenen Threads auf dieselben Daten in diesem Bereich vorzunehmen. Anders als bei den anderen Synchronisationsmethoden wartet ein Thread jedoch nicht darauf, dass ein Objekt frei wird, sondern er versucht einfach, die Critical Section zu betreten. Die Funktion EnterCriticalSection kehrt nämlich erst dann zurück, wenn der Thread, der vorher in der Critical Section war, LeaveCriticalSection aufgerufen hat.
Im Gegensatz zum Beispiel zu Semaphoren verwaltet hier das Programm die Critical Section (mit InitializeCriticalSection und DeleteCriticalSection). Critical Sections sind zwar etwas unflexibel und funktionieren auch nur innerhalb eines Prozesses, aber sie sind schnell und effizient für Mutual Exclusion, also wenn sowieso immer nur ein Thread auf die Daten zugreifen soll.
Weiteres siehe PSDK-Artikel "Critical Section Objects", dort wird auch auf Mutexes und Semaphoren eingegangen.
Und hoffentlich habe ich keinen Blödsinn erzählt, das ist das was ich glaube zu wissen ;c)
_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.