c++ 타이머 예제

그 (lambda) 함수는 타이머가 여전히 활성 상태인지 (그렇지 않으면 즉시 반환됨) 나중에 볼 수 있듯이 다른 함수에 의해 중지 될 수 있는지 확인하여 시작됩니다. 활성화된 경우 표시된 지연을 기다립니다. 타이머는 필요한 경우 시스템 호출을 사용하여 이루어집니다. 이 컨텍스트에서 타이머는 시간 계산이 긴 스톱워치를 의미합니다. intmax_t는 서명된 정수 형식의 모든 값을 나타내는 서명된 정수 형식을 지정합니다. 또는 이상 64비트로 정의됩니다. 분자와 분모는 모두 공용이며 자동으로 가장 낮은 용어로 줄어듭니다. 예를 들어 timercpp는 setTimeout 및 setInterval 함수를 구현하여 자바스크립트에서 영감을 받은 인터페이스를 사용합니다. 이것은 좋은 인터페이스로 이어집니다 : 마지막으로 타이머를 중지하려면 stop 메서드가 명확한 플래그를 설정합니다 : 기록 된 대로 클래스 비율은 컴파일 타임에 0및 오버 플로우로 나누기와 같은 모든 오류를 잡습니다. 예를 들어, 다른 언어의 이 편리한 기능을 C++에서 복제하는 timercpp라는 라이브러리가 HN의 첫 페이지에 있었습니다. 그것은 표현 코드를 허용 하는 좋은 인터페이스, 그러나 나는 그것이 생산에 사용 되 고 에 대 한 준비가 생각 하지 않습니다.

표 5.19는 비율 유형에 대해 정의된 컴파일 타임 작업을 나열합니다. 네 가지 기본 산술 컴파일 타임 연산 +, -, *, 및 /는 ratio_add, ratio_빼기, ratio_multiply 및 ratio_divide로 정의됩니다. 결과 형식은 비율이므로 정적 멤버 형식은 해당 형식을 생성합니다. 예를 들어 다음 식은 std::ratio (계산됨): setInterval를 통해 지정된 간격으로 동일한 함수의 코드를 반복적으로 실행할 수 있습니다. 위의 예에서 함수는 “Hey.”를 표시하는 람다입니다. 각 1s 후 …”. 그리고 setTimeout은 주어진 시간 내에 함수를 한 번 실행하여 여기에 “Hey.를 인쇄할 계획입니다. 5.2s 후. 그러나 나는 타이머를 중지합니다!” 5200 밀리 초에서 타이머를 중지합니다. 자바 스크립트 또는 Visual Basic과 같은 일부 언어는 타이머의 기능을 제공합니다. 이 글을 쓰는 시간 (C ++17)과 내 지식에 따르면 C ++는 그러한 기능을 제공하지 않습니다. 미리 정의된 비율을 통해 크거나 매우 작은 숫자를 지정하는 것이 더 편리합니다(표 5.20 참조).

이를 통해 불편하고 오류가 발생하기 쉬운 0 개 목록없이 큰 숫자를 지정할 수 있습니다.