Jaką funkcją zatrzymać na chwilkę działanie programu?

Lupi

Użytkownik
Dołączył
Październik 8, 2006
Posty
4
Witam,

Ostatnio zacząłem się bawić w C++ i zrobiłem sobie coś ala fałszywy format.

Kod:
#include <conio.h>

#include <iostream.h>

main()

{

     int liczba;

     liczba=0;

     cout<<"Program sformatuje dysk D: Stand by"<<endl;

     do

     {

                cout<<"Formatowanie w toku: "<<liczba<<"%"<<endl;

                liczba=liczba+1;

                }

  while (liczba!=101);

  cout<<"Koniec formatowania. Nacisnij dowolny klawisz...";

  getch();

}

Program wykonuje się bardzo szybko. Chciałbym wiedzieć jak opóźnić jego działanie
<
?? Jaką komendą ^^: Thx za pomoc
 

sinis

Użytkownik
Dołączył
Wrzesień 3, 2006
Posty
958
musisz dodać
Kod:
#include <windows.h>
i masz do wyboru:
Kod:
HANDLE h;

WaitForSingleObject(h, ilosc_milisekund);
lub
Kod:
Sleep(milisekundy);
oba działają tak samo ale ten pierwszy WEDŁUG MNIE nie obciaza tak procesora jak Sleep();

//Little Edit by Mo4x :mruga:
 

Lupi

Użytkownik
Dołączył
Październik 8, 2006
Posty
4
Thx
smile.gif
Naciśnałem pomógł
<


//od FDJ: NAUCZCIE SIE NAZYWAC NORMALNIE TEMATY I NIE PISAC TAKICH POSTOW
KLIKNIJ POMOGL I WYSTARCZY!!!!!!!!!!
 

M1ch00

Użytkownik
Dołączył
Sierpień 22, 2006
Posty
609
sinis, skad informacja, że Sleep obciąża procesor? Możesz dac linka? Bo oidp to sleep przekazuje schedulerowi, ze ma olewać wątek/proces przez n czasu...nie wiem jakie tu obciążanie skoro aplikacja nie dostanie czasu procesora.
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Originally posted by sinis
o tym jak obciąża procesor sam się przekonałem
Przekonałeś się używając funkcji Sleep() bez uprzedniego napisania, żeby program odbierał komunikaty (w Delphi to będzie Application.ProcessMessages;).
Zapewne myślałeś, że Ci się program zawiesił (stąd pewnie wniosek, że procesor został obciążony), ale to nie prawda, gdyż on tylko nie odbierał komunikatów!

Podobna sytuacja z tym "pseudozawieszaniem" była jak wysyłałem załącznik z własnego programu. Okazało się, że wystarczyło zrobić AntiFreeze formularza.
 

M1ch00

Użytkownik
Dołączył
Sierpień 22, 2006
Posty
609
Podobna sytuacja z tym "pseudozawieszaniem" była jak wysyłałem załącznik z własnego programu.[/b]
Porada - tam gdzie możesz używaj wątków. Wtedy program robi cokolwiek, a w tle wątek robi swoje, można się o niego więcej nie martwić.

Okazało się, że wystarczyło zrobić AntiFreeze formularza.[/b]
A to co takiego? Sprawia, że aplikacja działa w czasie sleepa?
 

sinis

Użytkownik
Dołączył
Wrzesień 3, 2006
Posty
958
Originally posted by Mo4x+--><div class='quotetop'>CYTAT(Mo4x)</div>
<!--QuoteBegin-sinis
o tym jak obciąża procesor sam się przekonałem
Przekonałeś się używając funkcji Sleep() bez uprzedniego napisania, żeby program odbierał komunikaty (w Delphi to będzie Application.ProcessMessages;).
Zapewne myślałeś, że Ci się program zawiesił (stąd pewnie wniosek, że procesor został obciążony), ale to nie prawda, gdyż on tylko nie odbierał komunikatów!

Podobna sytuacja z tym "pseudozawieszaniem" była jak wysyłałem załącznik z własnego programu. Okazało się, że wystarczyło zrobić AntiFreeze formularza.[/b]

srry źle się wyraziłem. Chodziło właśnie o te komunikaty.
 
Do góry Bottom