더북(TheBook)

불투명 타입 time_t(와 time)은 초 단위로만 표현한다. 그보다 정밀하게 표현하려면 struct timespectimespec_get 함수를 사용하면 된다. 나노 초 단위로 표현하는 tv_nsec이란 멤버도 있다. 두 번째 인수인 base에 대해 C 표준은 단 한 가지 값(TIME_UTC)만 정의하고 있다. 이 값에 대해 timespec_get을 호출해야 time을 호출한 결과 사이의 일관성을 유지할 수 있다. 둘 다 지구 참조 시각(Earth’s reference time)을 가리킨다. 플랫폼에 따라 base에 대해 일반 시계와 다른 값을 제공할 수 있다. 예를 들어 현재 컴퓨터가 속한 행성이나 물리계에 대한 시계가 있다.2 시스템 구동 시간만 가리키는 단조 시계(monotonic clock)를 사용하면 상대성을 비롯한 기타 시간 조정을 피할 수 있다. CPU 클럭은 프로그램을 실행하면서 리소스를 사용한 시간을 가리킬 수 있다.

후자의 경우, C 표준 라이브러리는 다음 인터페이스를 추가로 제공한다.

clock_t clock(void);

이 함수는 clock_t라는 또 다른 타입을 예전부터 지원하고 있었다. 이 타입은 산술 시간으로서 CLOCKS_PER_SEC 단위로 된 시간을 초 단위로 표현한다.

time, timespec_get, clock과 같이 인터페이스가 세 가지나 있다는 점은 좀 아쉽다. 다른 형식의 클럭에 대해 TIME_PROCESS_TIME, TIME_THREAD_TIME과 같은 사전 정의 상수를 제공한다면 좋았을 것이다.

 

 


2 인공위성이나 우주선처럼 지구보다 빠르게 이동하는 물체는 UTC 기준으로 상대론적 시간 이동(relativistic time shift)을 인지할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.