C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[463] TZExpendTime Class 입니다. 확인해 주시구요~
황경록 [mpbox] 6055 읽음    2005-05-25 18:00
열씸!  (cappuccino) 님이 Q&A 올려주신 나노 Sleep Macro 를 기반으로 만들었습니다.
자료 공유에 감사드립니다.
-----
함수나 기타 수행시간을 측정할 용도로 만들었습니다.
-----
더 좋은 방법이나 코딩에 오류가 있으면 지적 부탁드리겠습니다.

그림 그리는 코딩이 아닌 테크니컬한 코딩으로의 발전을 갈망하며 ^^:::
황경록 [mpbox]   2005-05-27 17:59 X
Micro Second 단위로 Sleep 할 수 있는 함수 추가 하였습니다.

Header : 

void MicroSleep( int iMicroSec );

Cpp :

void TZExpendTime::MicroSleep( int iMicroSec )
{
    __int64 iTmp = (m_iSecTick * iMicroSec) / 1000 / 1000;
    __int64 last, current;

    getTick(last);

    while( true )
    {
        getTick(current);
        if( (current - last ) > iTmp ) return ;
    }
}
볼레롱 [bolero]   2005-07-01 15:14 X
기존의 Sleep 함수는

Sleep을 호출하면  윈도우의 제어권을 다른 쓰레드로 넘기는 일도 하는 것으로 압니다.

Sleep(0) 가 아무 일도 안 할 듯 하지만,
다른 프로세서가 수행 할 수 있는 여지를 만들어 준다고 알고 있거든요.

위 리플의 예제는  
그냥 while 루프를 사용해서  다른 프로세서에게 시간을 주시 않아서

긴 값을 사용할 경우 문제가 되지 않을까요?

함수명에 맞게 아주 짧은 값만 사용한다면 별 문제 없겠지만요^^
황경록 [mpbox]   2005-07-05 15:40 X
음 ^^::: 맞는 말씀입니다만 함수이름이 마이크로 슬립 ^^! 즉, 마이크로초 동안 슬립해야 할 경우에 사용하고 일반적인 경우는 Sleep() 을 쓰면 되겠죠 ^^...

그리고 while 루프만을 사용한다고 해서 다른 프로세서가 할일을 못하는 건 아닙니다.
어차피 CPU 스케쥴링이란게 우선순위가 같다면 동등분배(?)로 이루어 질테니까요.
물론 저코드가 실행되고 있는 쓰레드는 완전 멈춤(?) 상태겠지만요.. ^^...

흐~ 그리고 사실 마이크로 슬립이란게 의미가 있나란 생각도 들지만....

음..~ 아니면 if( (current - last) > iTmp) return ; 문 밑에 Sleep(0) 을 넣는것도 괜찮겠지만... 크게 의미는 없어보여요 ^^ 뭐.... 상황에 맞추어 수정해서 쓰시면 될듯합니다.

음! .... 실시간 스트림 플레이와 같은 부분에서 타이밍 조정을 위해 사용은 가능할 듯하군요 ^^:
Q&A 게시판에서 어느분이 나노슬립 글을 올리셔서 그거 보구 만든거라 ^^
암튼 좋은 지적 감사합니다.

그리고 보통 Sleep(0) 은 제가 사용할 때는 쓰레드내에서 특정 플래그 처리
음... 디스트럭터 등에서 객체 참조가 끝날 때라던가 뭐 그럴때 ... 음.. 대기의
목적으로밖에는 사용하지 않아서요.

while( getLockingCount() )
{
    Sleep(0);
}

뭐 이렇게요 ^^
란문 [ranmun]   2005-08-16 18:43 X
이 클래스를 Visual ++에서 사용하고 싶은데, <Classes.hpp> 대신 "stdafx.h"를 해주었느데도 컴파일에러가 납니다. getTick 함수 때문 인 것 같은데... 어떻게 해야할지..

+ -

관련 글 리스트
463 TZExpendTime Class 입니다. 확인해 주시구요~ 황경록 6055 2005/05/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.