Thread braucht zu lange bis die Schleife beendet wird



  • Hallo,

    habe folgendes Problem:

    Wenn ich eine Schleife in einem Thread über ein Flag verlasen will (z.B. Stop klicken) muss ich ca. 10 sek. warten bis er die Schleife beendet hat.
    Als Sleep habe ich 2ms gestzt (Sleep(2)).

    Woran liegt das ?

    MfG



  • vielleicht weil Dein Thread arge Berechnungen ausführt und die 10 sec benötigt um einen Schleifendurchlauf zu vollenden?

    Kannst ja zwischendurch nochmal den Flag abtesten und den Thread die schleife über return / continue vorzeitig verlassen.



  • die Schleife verlasse ich über break

    ...
    if(m_bStartFlg == FALSE)
    break;
    ...
    

    das Flag wird auch in der Stop-Routine auf FALSE gesetzt nur dauert das halt so lange. Berechnungen ist mir nicht bekannt das da welche ausgeführt werden.



  • Zeig uns die Schleife...



  • do
    {
      int i = 0;
    
      for(i = 0; i <= n; n+11)					
      {
        if(m_bLoopFlg == FALSE)
          break;
        ...
    
      }
      Sleep(2);
    }
    while(m_bLoopFlg == TRUE);
    


  • Falls du i nicht gerade in dem ...-Teil änderst, terminiert das nicht. Ist das Absicht? Meinst du vielleicht n+**=**11?



  • sorry i+11 meinte ich



  • dann aber auch i+=11 oder?



  • mike2003 schrieb:

    sorry i+11 meinte ich

    Du meintest?

    Es bringt nichst, wenn du hier irgendwelchen Beispielcode zeigst. Mit hoher Wahrscheinlichkeit lässt du dabei nämlich den Teil, der den Fehler verursacht, weg.
    Also zeig uns bitte den richtigen Code, oder besser noch ein kompilierbares Minimalbeispiel, mit dem der Fehler reproduziert werden kann.



  • Abgesehen davon das man den Zugriff auf Variablen Sync muss wenn ein Thread reinschreibt und der andere ausließt.
    Sonst kann es mal krachen


Log in to reply