getter, setter und multithreading



  • Hi,

    Zuerstmal ich bin relatv neu mit C++ und mit multithreading habe ich auch praktisch noch gar nicht gearbeitet. Ansonsten habe ich allerdings schon einige Programmiererfahrung.

    Ich habe eine Klasse mit verschiedenen get und set Methoden.
    => Solange eine set-Methode arbeitet kann diese und die entsprechende get Methode nicht aufgerufen werden. get-Methoden können parrallel arbeiten aber die passende set-Methode muss gesperrt bleiben. Je Methoden paar könnte ich das jetzt mit einem Counter und zwie Mutexen erledigen. Aber das ist irgendwie unleserlich. Deswegen die Frage gibt's da schon irgend was fertiges?
    (Am liebsten ohne irgend welche großen Fremd-Librarys alla boost.)

    Grüße,
    wanne

    PS: Mutexe gelten wie alles andere nur Objektweit solange man sie nicht als static deklariert?



  • Read-Write Locks.



  • Es gibt seit C++11 Thread-Support: http://en.cppreference.com/w/cpp/thread
    GCC und Clang unterstützen das schon recht gut.

    Ich empfehle dir aber, erst einmal bei Single-Threaded zu bleiben und OOP und Templates und die C++-Standardbibliothek zu lernen. Multithreaded ist relativ komplex und überall Mutex einzusetzen macht das Programm nur langsamer. Multithreading ist die Kunst, möglichst viel parallel berechnen zu lassen und möglichst nicht miteinander zu kommunizieren (Locks, etc.)



  • cxx11 schrieb:

    Multithreaded ist relativ komplex und überall Mutex einzusetzen macht das Programm nur langsamer. Multithreading ist die Kunst, möglichst viel parallel berechnen zu lassen und möglichst nicht miteinander zu kommunizieren (Locks, etc.)

    Mir gehts erstmal nicht um performance sondern schlicht darum Nutzerinteraktin von der eigentlichen Berechnung zu entkoppeln. (Ich hätte also im Prinzip auch kein Problem damit wenn alles nur auf einem Core laufen würde. Wie das bei Java anfangs der Fall war.)
    Wenn das ganze nicht untereinander Kommunizieren würde gäb's einfach einen
    neuen Prozess und gut ist.

    cxx11 schrieb:

    Ich empfehle dir aber, erst einmal bei Single-Threaded zu bleiben

    Es macht sich aber einfach nicht gut, wenn man 10 Min warten muss, bis das System auf seine Eingabe reagiert.



  • wanne schrieb:

    Es macht sich aber einfach nicht gut, wenn man 10 Min warten muss, bis das System auf seine Eingabe reagiert.

    Eine set-Methode, die 10 Minuten dauert? Dann machst Du etwas grundlegendes falsch.



  • wanne schrieb:

    Mir gehts erstmal nicht um performance sondern schlicht darum Nutzerinteraktin von der eigentlichen Berechnung zu entkoppeln.

    Wofür dann die getter und setter?



  • tntnet schrieb:

    Eine set-Methode, die 10 Minuten dauert? Dann machst Du etwas grundlegendes falsch.

    dot schrieb:

    Wofür dann die getter und setter?

    Ihr werdet euch wundern aber es gibt Programme die nicht ausschließlich aus get und set Methoden bestehen.
    Nur von wo anders aus gibt's keine Zugriffe den Speicher, der von Verschiedenen Threads genutzt wird. Das ist der Sinn von get und set Methoden.
    Im allgemeinen würde man, wenn man auf performance geht, get und set Methoden eher wegrationalisieren. Wobei man da in C dran arbeiten kann das das nicht mehr auffällt.

    Mal ernsthafter es geht um sowas wie in john. Wenn man da auf die Leertaste drückt Kommt ne ausführliche Ausgabe des aktuellen statuses. (Nur das es bei mir etwas genauer differenzieren kann welchen teil des Statuses man haben will.)

    @Mechanics: Danke, ich glaube das ist das was ich gesucht habe.


Anmelden zum Antworten