Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: Sind GUI-Programme fast immer single-threaded?

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Question Sind GUI-Programme fast immer single-threaded?

    Sind eigentlich fast alle GUI-Programme single-threaded?

    Bei einigen Programmen nervt mich besonders, dass z. B. während eines minutenlangen Formatierens überhaupt nichts anderes mit dem Programm gemacht werden kann, während sich die zweite CPU lanweilt und ich wirklich keine Lust habe unnötig zu warten (man lebt ja nicht ewig)

    Wie ist eigentlich die Situation bei wxWindows; kann man damit nur single-treaded Programme erstellen? Und wie ist da der SMP-, HT- und Cluster-Support?
    Geändert von nobody0 (17-09-2003 um 12:33 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.04.2003
    Beiträge
    194
    also, ich denke sehr wohl dass du Threads bei wxWindows erstellen kannst, weil ja Threads vom OS bereitgestellt werden.
    Aber bei manchen Situation wirst du nicht ohne Threads auskommen können...

    mfG
    Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Original geschrieben von Silver
    also, ich denke sehr wohl dass du Threads bei wxWindows erstellen kannst, weil ja Threads vom OS bereitgestellt werden.
    Aber bei manchen Situation wirst du nicht ohne Threads auskommen können...

    mfG
    Also ich meine Multi-Threading, so dass das Programm z. B. gleichzeitig eine Speicherkarte beschreibt und Daten auswertet u. plottet und ich gleichzeitig die Optionen ändere.
    Können das nur die wenigsten Programme und ist das bei wxWindows ebenso?

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Sind GUI-Programme fast immer single-threaded?

    Original geschrieben von nobody0
    Sind eigentlich fast alle GUI-Programme single-threaded?
    Nicht alle, aber viele, weil es meistens nicht nötig ist und Threads immer schwieriger zu handhaben sind.


    Wie ist eigentlich die Situation bei wxWindows; kann man damit nur single-treaded Programme erstellen? Und wie ist da der SMP-, HT- und Cluster-Support?
    Üblicherweise ist zumindest die ganze GUI Aufgabe eines einzelnen Threads. Teilaufgaben des Programms können sicher mit jedem Toolkit in Threads ausgelagert werden und diese müssen dann mit dem Hauptthread geeignet kommunizieren.

    Oft reicht es einen Kindprozess zu benutzen und mit dem über Pipes oder Sockets zu kommunizieren.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Aha, und wie lagert man mit einem Toolkit aus?

    Sprachen wie Java sind doch auch für echte Parallelität entworfen worden und hinter einer Klickibunti-Grafik dann nur single-threaded zu arbeiten ist deshalb doch steinzeitlich; sowas würde ich höchstens beim HelloWorld-Programm machen (obwohl es davon auch Cluster-Versionen gibt).
    Sowas wie Formatieren von /dev/sda und gleichzeitig von /dev/sdb lesen ist doch trivial und sowas wie reentrant Funktionen kann man doch problemlos nebenbei laufen lassen. Sowas ist doch schon bei kleinen Microcontrollern üblich.

  6. #6
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    der begriff steinzeitlich ist ungluecklich gewaehlt, du meintest wahrscheinlich zeitgemaess .

    was willst du jetzt eigentlich wissen? wenn du schon sagst, dass du auf gar keinen fall single-threaded programmieren wuerdest, wenn ueberhaupt bei einem hello world, wozu fragst du dann noch?

    nach nur 30 sekunden suche kann ich dir deine frage ob wxwindows threadprogrammierung ermoeglicht beantworten:
    http://www.lpthe.jussieu.fr/~zeitlin...0.htm#wxthread
    (nein ich habe keine deutsche uebersetzung).

    gruss,

    tuxipuxi.

  7. #7
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    In einem GUI-Programm nur einen Thread zu verwenden, kann gute Gründe haben, z.B. gestaltet sich die Fehlersuche einfacher, ausserdem können bestimmte Fehler prinzipbedingt schon mal nicht auftreten, also ist das schon sinnvoll.
    Abgesehen davon kann man bei längeren Berechnung zwischendurch ja die Gui updaten(wxYield heisst das unter wxWindows glaub ich) und Progressbars und so was verwenden, und das alles mit nur einem Thread.

    kommt halt drauf an, was für einen Typ von Programm man macht. In anderen fällen kanns durchaus sinnvoll sein mehrere Threads zu verwenden. unter wxWindows kann man dann z.B. mit wxPostEvent Events vom Arbeiter Thread an die GUI schicken.
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Aha, danke

    Naja, die Kollegen, die GUI-Programme schreiben finden singlethreaded Programme ok (schlecht Gewohnheiten sind schwer zu beseitigen), aber sowas primitives nervt gewaltig, denn ich muss schon bei der Microcontroller-Programmierung mehrere Threads programmieren und privat benutze ich fork häufig. Deshalb will ich auch bei GUI-Programmen nicht auf singlethreaded beschränkt bleiben.

  9. #9
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Hmm...

    Ich verstehe irgendwie den sinn deines Posts nicht...

  10. #10
    Registrierter Benutzer
    Registriert seit
    20.07.2000
    Ort
    Österreich
    Beiträge
    189
    wxwindows kennt threads. die übersicht gibts hier:

    http://www.wxwindows.org/manuals/2.4...threadoverview

  11. #11
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Hmm...

    Original geschrieben von ceisserer
    Ich verstehe irgendwie den sinn deines Posts nicht...
    Ich glaube das versteht außer ihm niemand.

    Vielleicht leidet er unter einenm unterbewussten Wunsch, sich das Leben so schwer wie möglich zu machen.

    Oder er hat den Unterschied zwischen primitv und simpel noch nicht verstanden.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #12
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    ;-)

    ;-)

  13. #13
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Was ist denn da schwer zu verstehen, dass ich z. B. eine Speicherkarte formatieren u. gleichzeitig eine andere auslesen möchte?
    Das geht doch schon mit einer Bash + screen/& (z. B. "cat /dev/sdb > foo.out&; cat bar.out > /dev/sdc") ganz einfach und das erwarte ich auch von Programmen mit grafischer Oberfläche! Es muss ja nicht sein, dass ein einziger Prozess alles andere unnötig blockiert, so wie die Kollegen das Programmieren (u. mich damit unnötig warten lassen).
    Geändert von nobody0 (18-09-2003 um 12:27 Uhr)

  14. #14
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    du trennst aber normaleweise die Gui (view) von deiner verarbeitungslogik (model),
    so dass die gui in einem und das model auch in einem (oder mehreren) thread(s) laufen.
    du brauchst aber in wenigsten fällen mehrere threads für die gui.

    gruss
    Arthur
    Geändert von arthur (18-09-2003 um 12:37 Uhr)
    ---------
    irc.mrunix.de #mrunix

  15. #15
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    Original geschrieben von nobody0
    Was ist denn da schwer zu verstehen, dass ich z. B. eine Speicherkarte formatieren u. gleichzeitig eine andere auslesen möchte?
    Das geht doch schon mit einer Bash + screen/& (z. B. "cat /dev/sdb > foo.out&; cat bar.out > /dev/sdc") ganz einfach und das erwarte ich auch von Programmen mit grafischer Oberfläche! Es muss ja nicht sein, dass ein einziger Prozess alles andere unnötig blockiert, so wie die Kollegen das Programmieren (u. mich damit unnötig warten lassen).
    a) du bist mit deinen kollegen nicht einverstanden
    b) du willst eine speicherkarte schreiben und eine andere auslesen und weisst nicht wie es geht
    c) du planst so etwas mit wxwindows (warum auch immer)
    d) du willst die softwarewelt revolutionieren.

    was davon trifft zu?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •