Funktion pausieren - Thread nötig?



  • Hallo Leute,

    ich bin neu hier und hoffe mal dass ihr meine frage verstehen werdet.

    Ich arbeite in einem Programm das über ein Netzwerk mit Hardware verbunden ist (Details sind nicht wichtig). Nachdem ich über eine Funktion ein Kommando an die HW schicke bekomme ich ein Kommando zurück, was sich durch dass automatische ausführen einer bestimmten Funktion äußert.

    Ich möchte jetzt in einer Schleife warten bis diese Funktion ausgeführt wurde(sprich das Kommando kam), dazu habe ich schon ein Flag in diese Funktion eingefügt, dass dann gesetzt wird.

    Ungefähr so:

    RegisterEdit()
    {
       Flag = FALSE;  // global
       ...
       int T1 = time(0);
       while( time(0)-T1 < 3 )
       {
    //    MessageBox(...);
          if ( Flag == TRUE )
          ...
       }
       ...
    }
    
    OnReceive()
    {
       ...
       Flag = TRUE;
       ...
    }
    

    Da ich soweit nicht mit Multithreading arbeite (und ich glaube dass würde mich auch nicht weiterbringen), kann die entsprechende Funktion aber nicht ausgeführt werden, während die Schleife arbeitet. Wenn ich in diese Schleife eine MessageBox implementiere, erreiche ich quasi mein Ziel, da das restliche Programm weiterarbeitet, bis ich die Box schließe (?).

    Gibt es einen Befehl oder eine Funktion, die so wie die MessageBox arbeitet, der Benutzer aber nix davon merkt und die zeitlich begrenzt werden kann, während das Programm ansprechbar ist, aber trotzdem an der Stelle wartet (sowas wie "sleep")?

    Ich denke bei dem Nutzung eines Threads, könnte ich zwar auf die Funktion(das Kommando warten), das restliche Programm würde aber trotzdem weiter laufen.

    Ich hoffe ihr habts verstande. Bin für Lösungsvorschläge sehr dankbar, auch für einen möglichst simplen mit Threads.

    Gruß
    MrFlow



  • Hallo,
    Standard-C++ kennt keine solche Funktion. Deine Betriebssystem-API aber mit großer Wahrscheinlichkeit. Unter Windows gibt es z.B. Sleep. Unter Linux/Unix usleep.

    Unter welchem BS arbeitest du?


Anmelden zum Antworten