Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Warteschleife

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.02.2003, 21:02 Uhr
KaizerQuint89



Könnte man theoretisch eine Warteschleife mit einer Whileschleife verbinden wo zum Beispiel
C++:
int wartezeit = 0;
while (wartezeit < 1000000000)
{
wartezeit++;
}
cout << "Fertig!\n";


Eine derartige Wartezeit einbinden weil er ja nicht in einer sekunde bis 1000000000 zählen kann
--
C++ ist geil
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.02.2003, 23:05 Uhr
Alf



Hy!

Versuch mal:


C++:
DWORD dwStartZeit;
int iZeit = 1000;            //1000 msec = 1 sec
dwStartZeit = GetTickCount();
while ( (GetTickCount() - dwStartZeit ) < iZeit);


--
Mfg

Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.02.2003, 10:20 Uhr
virtual
Sexiest Bit alive
(Operator)


@Kaizer
Meinst Du nicht, daß es schon bald Rechner geben könnte, die das können? Oder vielleicht Optimiert Dein Compiler den Kram von:

C++:
int wartezeit = 0;
while (wartezeit < 1000000000)
{
wartezeit++;
}
cout << "Fertig!\n";


zu

C++:
wartezeit = 1000000000;
cout << "Fertig!\n";


Was intelligente Compiler durchaus machen könnten.
Diese Schleifenmethode hat zwei ganz große Nachteile:
1. Sie verbraten endlos Rechenzeit, weil Der prozessor dauernd mit Zählen beschäftigt ist
2. Wie lange die Schleife dauert, hängt vom Prozessor/Computer ab.
@Alf
Auch hier gilt der erste Nachteil: Rechenzeit wird endlos verbraten.

Man kann mit ANSI C/C++ kein Programm schlafen legen. POSIX stellt die Routine sleep bereit, Windows Sleep.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.02.2003, 12:35 Uhr
~KaizerQuint89
Gast


und wie mach ich sowas?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.02.2003, 12:57 Uhr
virtual
Sexiest Bit alive
(Operator)


Unter POSIX Kompatiblen Systemen (Linux, UNIX usw.) zB mit:

C++:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned seconds = 1;

    if (argc>2)
    {
        fprintf(stderr, "error: Illegal command line.\nusage: my_sleep [seconds]\n");
        exit(EXIT_FAILURE);
    }else if (argc==2)
    {
        if (1!=sscanf(argv[1], "%u", &seconds))
        {
             fprintf(stderr, "error: unsigned int expected\nusage: my_sleep [seconds]\n");
             exit(EXIT_FAILURE);
        }
     }

     sleep(seconds);
}


Du kannst auch hier schauen, wie man POSIX konform auf eine größere Zeitauflösung (zB 1000stel Sekunden) kommt.

Unter Windows kannst Du Sleep verwenden, da sähe das Programm dann so aus:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    unsigned seconds = 1;

    if (argc>2)
    {
        fprintf(stderr, "error: Illegal command line.\nusage: my_sleep [seconds]\n");
        exit(EXIT_FAILURE);
    }else if (argc==2)
    {
        if (1!=sscanf(argv[1], "%u", &seconds))
        {
             fprintf(stderr, "error: unsigned int expected\nusage: my_sleep [seconds]\n");
             exit(EXIT_FAILURE);
        }
     }

     Sleep(seconds*1000);
}


Beide Programme sind ungetestet.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.02.2003, 19:28 Uhr
Alf



Hy Virtual!

Ich lerne gerade etwas über Spiele Programmierung und da brauch man halt konstante Zyklen. Ich dachte das es da schon in Ordnung ist da man beim Spielen keine anderen Progs im Hintergrund laufen lassen sollte.

Aber die Idee von Interliegenten Computern erschreckt mich!
Was tuuuuuu ich nur???
--
Mfg

Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.02.2003, 13:15 Uhr
virtual
Sexiest Bit alive
(Operator)


ich habs nochmal nachgecheckt: Sowohl der gcc alsauch der der VC optimieren die Schleife komplett weg (geeignet Compilerflags vorausgesetzt)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.02.2003, 17:46 Uhr
Alf



Danke virtual!

Da werde ich woll zukünftig besser auf passen müssen!
--
Mfg

Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: