Konsole thread-safe machen
Verfasst: 31.05.2009, 15:37
Moin moin,
ich programmiere momentan an einer Konsole, die ich für meine Projekte verwenden will. Diese will ich nun thread-safe machen und bräuchte dabei Hilfe.
Ich habe die Konsole so geschrieben, dass es möglich ist die Ausgabe in eine Datei, ein Fenster oder sonst irgendwas zu schreiben. Im Endeffekt bekommt man einfach einen Verweis auf den Schreibpuffer der Konsole. Nun will ich jedoch in der Lage sein, dass man von überall in die Konsole schreiben soll. Also hab ich eine Basisklasse geschrieben, von der es nur eine Instanz geben darf. Nun gibt es eine "ConsoleObject" Klasse, der man einen Zeiger auf die Basisklasse übergibt. Danach schiebt man einfach munter Daten in dieses "ConsoleObject".
Intern läuft dabei folgendes ab : Das Objekt vom Typ "ConsoleObject" holt sich bei der Basisklasse einen Puffer, in den geschrieben wird. Ist dieser voll wird der Basisklasse gesagt, dass der Puffer voll ist und ein neuer leerer Puffer wird zurückgegeben.
Nun bin ich mir jedoch nicht sicher, wie ich das vernünftig umsetzten kann. Soll ich der Basisklasse nen Mutex verpassen und die einzelnen "ConsoleObject"-Objekte jedes Mal in einer Endlosschleife probieren lassen den Mutex zu locken? Oder gibt es eine bessere Möglichkeit wie ich diese Konsole umsetzen kann.
Mfg
BS
ich programmiere momentan an einer Konsole, die ich für meine Projekte verwenden will. Diese will ich nun thread-safe machen und bräuchte dabei Hilfe.
Ich habe die Konsole so geschrieben, dass es möglich ist die Ausgabe in eine Datei, ein Fenster oder sonst irgendwas zu schreiben. Im Endeffekt bekommt man einfach einen Verweis auf den Schreibpuffer der Konsole. Nun will ich jedoch in der Lage sein, dass man von überall in die Konsole schreiben soll. Also hab ich eine Basisklasse geschrieben, von der es nur eine Instanz geben darf. Nun gibt es eine "ConsoleObject" Klasse, der man einen Zeiger auf die Basisklasse übergibt. Danach schiebt man einfach munter Daten in dieses "ConsoleObject".
Intern läuft dabei folgendes ab : Das Objekt vom Typ "ConsoleObject" holt sich bei der Basisklasse einen Puffer, in den geschrieben wird. Ist dieser voll wird der Basisklasse gesagt, dass der Puffer voll ist und ein neuer leerer Puffer wird zurückgegeben.
Nun bin ich mir jedoch nicht sicher, wie ich das vernünftig umsetzten kann. Soll ich der Basisklasse nen Mutex verpassen und die einzelnen "ConsoleObject"-Objekte jedes Mal in einer Endlosschleife probieren lassen den Mutex zu locken? Oder gibt es eine bessere Möglichkeit wie ich diese Konsole umsetzen kann.
Mfg
BS