www.mikrocontroller.net

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


Autor: Alexander I. (daedalus)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.