안녕하세요. 시간지연시키는 가장 쉬운 방법은 for문을 이용하여, 예를 들면 1에서 100만까지 세라고 시키는 방법이 있겠죠? for (int i=0; i<1000000; i++) 이렇게요. 또 하나의 방법은 clock() 같은 함수를 이용하는 방법입니다. clock() 함수의 리턴값은 프로그램이 시작된 후부터 얼마나 지났는지를 밀리세컨드 단위로 보여줍니다.
#include <time.h>
void delay(long millisec)
{
clock_t c1, c2;
c1 = clock();
do {
c2 = clock();
} while (c2-c1 < millisec);
}
c2에 clock()으로 계속 값을 받아 delay 함수가 시작되었을때 시간 c1과 millisec만큼의 차이가 나면 함수가 끝나는 형식입니다. 참고로 clock()은 내부적으로 GetTickCount() 라는 함수를 호출하며 이 함수는 윈도우가 시작된지 얼마나 지났는지를 역시 millisecond 단위로 리턴해 줍니다.
이상은 간단히 시간지연을 할 수 있는 방법이지만 단점으로 저 delay함수가 실행되는 동안은 루프를 돌면서 CPU를 점유하게 되며 중간에 다른 어떤 윈도우 메세지도 받지 못합니다
Borland C++ 질문/답변중에 시간지연 도중에도 윈도우 메세지를 받아 처리할수 있는 김성진님의 좋은 답변이 있으니 아래 링크도 참고하시기 바랍니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=13022
김원평 님이 쓰신 글 :
: 윈도우즈98에서 window borland c++ 3.1 버젼으로 작업하고 있습니다.
:
: 그런데 시간을 지연 시킬수 있는 방법이 없더군요.
:
: 도스에서 사용하던 delay() 도 안 먹고,
: 일반적으로 ANSI에서 지원하는 sleep()도 안 먹더군요.
:
: 설마 방법이 없는것은 아니겠죠?
:
: 유닉스 환경에서만 작업 하다가.
: 갑자기 맡게된 일이라 어려움이 많군요.
:
: 아시는분 답변 부탁드립니다.
|