[C++/C] Funktionen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich bin noch nicht ganz fit in C++
    Deswegen die Frage.
    Ich habe ein Display und einige Funktionen, unter andern eine Funktion die, die Zeit anzeigt auf dem Display.
    Wenn ich aber die Zeit jede Sekunde anzeigen will, sprich: jede Sekunde wird die Funktion auf gerufen, wird der Rest des Programms blockiert.
    Wie kann ich erreichen dass genau diese Funktion das Programm nicht blockiert und dass der Rest des Programms weiter läuft???

  • Ja hey, auch wieder fleissig ;)

    Multithreading ...

    Du erzeugst einen pthread(), der einen Update auf das Display macht um sich anschliessend für eine Sekunde schlafen zu legen.
    Der andere Programmzweig ist davon unberührt ...

    Du kannst Dir das RGB-Server Programm von mir umschreiben. Das hat mehrere Threads laufen.
    Oder Du suchst Dir da irgendein Beispiel im Netz ...

    cu,
    -ds-

  • ei jo ich bin immer fleissig, nur hatte ich die letzten 2 wochen stress privater natur.
    und danke ich schaus mir an.

  • grummel vergesst es es funzt...
    nur noch die tasten abfragen dann dass erste ergebnis

    *edit heute morgen funzt es wieder nicht*

    langsam bekomme ich schlaflose nächte.

    kann wer mal über den code schauen bitte
    neue version wo es ab und an mal funzt

    icberry.zip

    Einmal editiert, zuletzt von ProudSound12121 (1. April 2014 um 05:08)

  • Kannst du mir kurz erklären wass du damit meinst "threadsafe" machen

    ich stehe gerade im wald und verstehe nichts

  • Ich weiss nicht. Muss es zum Anfang denn gleich in die Thread Programmierung gehen?
    Man kann das ja zunächst erst mal mit dem klassischen Unix fork() and exec() versuchen.

  • eine anwendung für das C-berry :)
    am ende soll sowas wie ein multimediaradio rauskommen.
    die tasten über GPIO sind schon als funktion vorhanden.
    das ansteuern von mpd funktioniert auch
    nur eben die anzeige nicht.

    irgendwie verstehe ich das nicht wie man eine uhr anzeigen lassen kann die weiterläuft und gleichzetig menü anzeigen/abfragen kann

  • Na hallöchen,

    denk Dich mal in Dein Programm rein ....

    Die beiden threads, die Du erzeugst beenden sich nach einem Duchlauf ... zumindest wenn ich das richtig gelesenn habe.

    Mein Tipp:
    Thread 1 -> Schleife ( ruhig Endlos, die killst Du dann eh weg ) die nur "Thread 1" ausgibt und einen sleep(2) macht.
    Thread 2 -> ditto ... evt. einen sleep(3) damit das asynchron wird.

    Das Programm dann mit CTRL-C beenden.
    Wenn das klappt, einen getchar() ins Hauptprogramm und bei Eingabe von q oder X oder ... die threads terminieren und das Programm beenden.

    cu,
    -ds-

  • Ähm DANKEEEEEEEEEEEEEEEEEEee :)
    es geht :)

    irgendwann komme ich zu dir wir wohnen ja nicht weit weg

  • Schön, freut mich ...

    hier kam ein Einwand wegen threadsafe ... ich weiss jetzt nicht so genau, was damit gemeint war.
    Behalt das aber mal im Hinterkopf ... wenn sonderbare Ergbnisse oder ein crash passiert.
    Dann wäre es ratsam noch einen thread mehr zu machen, der exklusiv mit den unsicheren Funktionen umgeht.

    Einfach mal losbrüllen, wenn es noch Probleme gibt ;) ...

    Womit mal wieder bewiesen wäre, dass auch multithreading in C kein Hexenwerk ist ...

    ciao,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!