Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Fr 28.03.03 21:22 
Hallo,

kann mir jemand erklären, was criticalSections sind? Ich weiß nur, dass die Igendwie zur Thread-Synchronisation dienen. Ich kenne schon WaitFor...(). Aber wie funktionieren die Abschnitte? Und wo wendet man die an, wo ist WaitFor...() besser?

_________________
Life is a bad adventure, but the graphic is really good!
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Sa 29.03.03 17:49 
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.
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 29.03.03 18:01 
Wow, ich hätte nicht gedacht, dass das so einfach ist! Vielen Dank. Ich habe zwar schon in der PSDK nachgelesen, aber nix gefunden. Dein Stichwort half weiter. Jetzt funzt's. Mit Semaphoren und Mutexen kenn eich misch schon ein bisschen aus. Nur ein Thread kann ein Mutex besitzen, und Semaphoren sind eigentlich das gleiche, oder? Ich meien, ich benutze Mutexe oder Semaphoren immer nur, um Multiple Instances zu vermeiden. Kann man die noch woanders einsetzen (konkrete Beispiele)?

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 29.03.03 20:12 
Da war noch was... "Overlapped"... sagt dir das was? Muss auch was mit Dateizugriff und Multithreadingzu tun haben. Ich will deswegen kein neues Topic schreiben, kennst du dich damit aus?

_________________
Life is a bad adventure, but the graphic is really good!
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: So 30.03.03 12:29 
Ich bin auch schon darauf gestoßen, das kommt bei asynchronen Dateioperationen vor (also wenn du Windows sagst, es möge bitte 2 GB von der Pladde einlesen und in der Zeit was besseres zu tun hast (c; ).
Aber ich kenne mich nicht damit aus, da ich meistens nur synchron einlese...

Aber auch das hat Microsoft in einem relativ kompakten Artikel namens "Synchronization and Overlapped Input and Output" im PSDK zusammengefasst.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 30.03.03 13:25 
Danke für das Stichwort, das hilft mir schonmal erheblich weiter! :D

Aber ich bräuchte eine Demo, weil so ganz check' ich das doch nicht. Ich werden dann mal ein bisschen googeln.

_________________
Life is a bad adventure, but the graphic is really good!