kyuseo의 게임 프로그래밍

time_t 와 InterlockedExchange 사용금지 (Visual Studio 2005 변경) 본문

C++ 개발

time_t 와 InterlockedExchange 사용금지 (Visual Studio 2005 변경)

kyuseo 2007. 12. 28. 19:24

개요..

 

InterlockedExchange는 스레드(Thread)에 안전하게 32bit( INT, LONG, DWORD )형 변수를 교환하는 함수입니다.

 

Visual C++ 6.0 에서는 time_t 자료 형이 4 바이트이지만 Visual Studio 2005에서는 8바이트로 변경되었습니다.

 

따라서 InterlockedExchange에서는 time_t 자료 형의 변수를 사용하면 안됩니다.

 

 

코드

 

int n = sizeof(time_t ); // n == 8

 

InterlockedExchange( ( long* ) &m_ttReceive, ( long ) time( NULL ) );

 

time_t 에서는 이와 같은 InterlockedExchange 는 더이상 쓰면 안됩니다.