Com-Operation Synchronität
-
Hallo zusammen!
Ich rufe die Funktionen WriteFile und ReadFile auf um auf die serielle Schnittstelle zu schreiben. Jetzt würde ich gerne wissen ob diese Funktionen Thread-Synchronisiert sind. Ein Kollege von mir meinte, dass er Fehler hatte, wenn er diese Funktionen von mehreren Threads mit demselben File-Handle aufgerufen hat. Jetzt hätte ich die Frage, ob diese Fehler immer noch auftreten können, wenn ich verschieden File-Handle benutze. Hat da vielleicht schon jemand von euch Erfahrung damit? Für Hile bedanke ich mich schonmal im voraus.
Gruß Tom
-
wie die Funktionen arbeiten kann ich dir nicht sagen.
Wenn zwei Programm/Threads auf ein und dieselbe Datei zugreifen, müssen die Zugriffe synchronisiert werden.
Dazu gibt es Mutexe und Semaphoren und sicher noch mehr ...
-
So ist es (wie Horst2 auch geschrieben hat). Du mußt Deine Threads selbst synchronisieren.
Jeder Thread kann mit dem Handle (welches CreateFile() beim Öffnen liefert) auf den COM-Port zugreifen.
So ist es auch möglich, daß z.B. ein Thread alle ankommenden Bytes empfängt, während ein anderer Thread sich um das Senden kümmert, und das auf ein und denselben COM-Port bzw. Handle.Was nicht geht ist der gemeinsame Zugriff über mehrere Prozesse hinweg, das liegt an den verschiedenen Adressräumen des jeweiligen Prozesses.
Verschiedene File-Handle, wie Du geschrieben hast, geht nicht beim ein und denselbem COM-Port, da jeder COM-Port nur einmal und exklusiv geöffnet werden kann ("COM port cannot be shared").
Martin
-
Danke für die Antwort. Bei der Variante mit mehreren Handles meinte ich aber natürlich dann auch für verschiedene COM-Ports.
Gruß Thomas