한국어 Translate to English (by Google) 日本語に翻訳します (by excite.co.jp)       작성자: Kyuseo의 게임 프로그래밍 이야기 :: http://www.soonsin.com | 트위터 @kyuseo

개요..

 

서버 프로그램 및 안정성 높은 프로그램 개발할 경우 timeGetTime() 함수 사용방법에 대한 주의 사항을 알려드립니다.

 

근본적으로 timeGetTime() 함수는 milliseconds 단위로 DWORD 자료형을 리턴하는 함수입니다. 하지만 자료형의 한계 및 함수 특성상 컴퓨터가 켜진 이후 49.71일 이 경과되면 다시 0으로 초기화 되는 현상이 발생됩니다.

 

따라서 서버 프로그램과 같이 장시간 서비스가 되는 소프트웨어를 개발할 경우에는 가급적 timeGetTime() 함수를 사용하지 않거나 변수 오버플로우를 처리해야 합니다.

(개인적으로는 1초 단위를 리턴하는 time() 함수를 많이 사용합니다.)

 

안정성이 생명인 게임 서버 프로그램의 모습

 

 

 

오류를 제어하지 않는 코드의 예

 

    DWORD dwCurrentTime = timeGetTime();

 

    DWORD dwDiff = dwCurrentTime - m_dwStart; // dwDiff 값은 경우에 따라서 음수 ( - ) 가 되거나 DWORD 자료형을 초과할 수 있다    

    

    // 49.71일처리...

    if( dwCurrentTime < m_dwStart )

    {

        return 0;

    }

 

 

오류를 제어한 코드의 예

 

    DWORD dwCurrentTime = timeGetTime();

 

    DWORD dwDiff = dwCurrentTime - m_dwStart; // dwDiff 값은 경우에 따라서 음수 ( - ) 가 되거나 DWORD 자료형을 초과할 수 있다

      

    // 49.71일처리...

    if( dwCurrentTime < m_dwStart )

    {

        // 오버 플로우된 변수값을 적절히 처리한다.

        m_dwStart = 0;

        dwDiff = 0;

    }

 

 




qrcode
이 글의 QR 코드입니다.


이 저작물은 비영리, 출처:Kyuseo 프로그래밍 이야기 :: http://www.soonsin.com 표시하면 스크랩 하실 수 있습니다.

별도로 출처 표시가 되지 않은 저작물은 Kyuseo에게 저작권이 있습니다.   ★──━━ 행복한 하루 되세요 ━━──★

BLOG main image
93년부터 프로그래밍을 독학한 게임 프로그래머 kyuseo의 프로그래밍 정보와 게임 개발 강좌를 주로 다룹니다. by kyuseo

카테고리

분류 전체보기 (623)
누리게임즈 (4)
Kyuseo 소개, 잡담 (161)
만든 게임 및 프로그램 (98)
-----------★----------- (0)
개발자 팁 (65)
스마트폰 게임 개발 (47)
C++ 개발 (119)
------------------------♣ (0)
컴퓨터 활용 팁 (98)
게임, 서적, 문화 소감 (31)
------------------------♥ (0)
전체 : 2,803,469
오늘 : 113 어제 : 159