Cursour Position zu langsam



  • Hallo,

    ich suche eine andere möglichkeit zu diesem hier:

    COORD position;
    
    position.X = 10;
    position.Y = 10;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position );
    cout<<"Ich bin der Test";
    

    Hintergrund dazu ist, das ich ein Programm mit mehren Threads in einer Konsolenumgebung laufen lasse.
    Die verschieden Threads haben bestimmte Bereiche in der Konsole, wo sie reinschrieben.
    Mit anderen Worten verändere ich vor jedem Schreibvorgang die Cursorposition.

    Leider gibt das das Problem, das manchmal die Cursorposition von dem einen Thread gesetzt wurde und genau dannach von einem anderen Thread geschieben wird.
    daraus folgt ein heilloses Durcheinander während der Ausgabe.

    Jetzt wollte ich fragen ob es eine Funktion gibt, die sich den Cursor resaviert, schreibt und ihn dann wieder freigibt.



  • Hallo, willkommen im Forum! Du hast leider wie viele andere auch einen oder mehrere der folgenden Fehler begangen:

    • Du hast im falschen Forum gepostet. Dieses Forum ist ausschließlich für Fragen rund um Standard-C++ gedacht. Für Fragen zu OS-Spezifischen Dingen, Hardware-Ansteuerung, GUIs etc. sind andere Unterforen zuständig.
    • Du stellst Fragen zu Frameworks die über den Standard hinausgehen. Die Foren zu den Frameworks oder entsprechende Mailinglists können dir vermutlich besser weiterhelfen.

    Der folgende Link ist auch empfehlenswert: Wie man Fragen richtig stellt

    WinAPI-Forum dürfte vermutlich das richtige sein.
    Zum Problem: schau dir mal das Producer/Consumer pattern an, in deinem Fall wären die verschiedenen Threads die Producer und ein Objekt was die Schreibarbeiten auf der Console übernimmt der Consumer.


  • Administrator

    Vielleicht auch noch hilfreich (WinAPI Console Functions):
    http://msdn.microsoft.com/en-us/library/ms682073.aspx

    Und diese Funktion könnte noch von Interesse sein:
    http://msdn.microsoft.com/en-us/library/ms687410.aspx

    Grüssli



  • Vielleicht habe ich mich falsch ausgedrückt,
    ich will nicht die CoursorPosition in der WinAPI verändern oder so.

    Ich dachte an einen ähnlichen Befehl in C++.


  • Administrator

    1. Du hast oben SetConsoleCursorPosition und GetStdHandle verwendet, beides WinAPI Funktionen.
    2. Du redest von beschleunigen, das kann man, in dem man die WinAPI direkt verwendet, statt den Umweg über C++ begeht.

    -> Wie soll man da wissen, dass du nur C++ verwenden willst?

    3. Du kannst über Standard C++ nicht an eine bestimmte Position hinschreiben.

    Grüssli


Log in to reply