Forum: Mikrocontroller und Digitale Elektronik C++: Thread öffnen/schließen in Klassen-Konstruktor/Destruktor - Guter Stil?


von Alexander I. (daedalus)


Lesenswert?

Hallo,

ich habe mir eine Port-Klasse geschrieben, die einen Com-Port am PC 
bedient. Die Interaktion erfolgt dabei im POSIX-Stil mit den Methoden 
read, write, ioctl usw. Damit die Kommunikation nicht von der 
Ausführungsgeschwindigkeit des MFC-Dialogs (Visual C++) abhängt, habe 
ich die Klasse so implementiert, dass im Konstruktor ein AfxBeginThread 
ausgeführt wird. Dieser Thread kommuniziert dann über zwei Daten-Queues 
und einem "Steuerungsstruct" (Events, CriticalSections, etc.) mit der 
Port-Klasse. Wenn das Objekt dann letztlich gelöscht wird, beendet der 
Destruktor auch den Thread und wartet bis dieser sich beendet hat. Den 
Zugriff auf gemeinsame Objekte (z.B. die Rx/Tx-Queue) habe ich mit einer 
CriticalSection synchronisiert.

Es funktioniert alles, am Oszi kommen die Bytes sauber rausgetickert und 
bei gebrückter RX/TX-Leitung "hört" sich der Port auch selbst. Bevor ich 
darauf aufbauend jedoch weitere Konstrukte implementiere, wollte ich 
fragen, ob das oben genannte einen guten Stil darstellt oder ob ich 
einige grobe Designschnitzer begangen habe, die mir später Probleme 
bereiten werden?

Habe da noch nicht so die Erfahrungswerte... vielleicht kann mir das 
jemand sagen ob gut oder schlecht und wenn schlecht wie eine gute 
Alternative aussieht.

Vielen Dank!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.