c++ timer 예제

setInterval는 지정된 간격으로 동일한 함수의 코드를 반복적으로 실행할 수 있습니다. 위의 예에서 함수는 „Hey.“를 표시하는 람다입니다. 각 1s 후 …“. 그리고 setTimeout은 주어진 시간 내에 함수를 한 번 실행하여 여기에 „Hey.를 인쇄할 계획입니다. 5.2s 후. 그러나 나는 타이머를 중지합니다!“ 5200 밀리 초에서 타이머를 중지합니다. 타이머를 사용할 수 있는 또 다른 라이브러리는 C++이며 부스트 아시오이며 이벤트 루프를 사용합니다. 그러나 표준 C ++에 통합 될 계획인 훨씬 더 큰 라이브러리입니다. 그러나 그것은 다른 게시물에 대한 주제입니다. 다른 언어의 이 편리한 기능을 C++에서 복제하는 timercpp라는 라이브러리가 HN의 첫 페이지에 있었습니다. 그것은 표현 코드를 허용 하는 좋은 인터페이스, 그러나 나는 그것이 생산에 사용 되 고 에 대 한 준비가 생각 하지 않습니다. 나는 항상 얼마나 많은 사람들이 일시 중지하고, 블로그 게시물을 따로 설정하고, 예제를 코딩하는 데 시간이 걸리는지 궁금합니다.

이렇게 하면 간단한 읽기 보다 더 많은 것을 배울 수 있습니다. 쉽게 하기 위해 setInterval의 구현을 제외한 모든 코드가 이미 작성된 온라인 컴파일러 웹 페이지가 있습니다. 자바 스크립트 또는 Visual Basic과 같은 일부 언어는 타이머의 기능을 제공합니다. 이 글을 쓰는 시간 (C ++17)과 내 지식에 따르면 C ++는 그러한 기능을 제공하지 않습니다. 기록된 대로 클래스 비율은 컴파일 타임에 0과 오버플로로 나누기와 같은 모든 오류를 catch합니다. 예를 들어 스레드의 lambda 함수는 타이머가 여전히 활성 상태인지 반복적으로 확인하고 간격 시간을 대기하고 함수를 실행합니다. 마지막으로 타이머를 중지하려면 stop 메서드가 명확한 플래그를 설정합니다. 타이머는 필요한 경우 시스템 호출을 사용하여 이루어집니다. 이 컨텍스트에서 타이머는 시간 계산이 긴 스톱워치를 의미합니다. 예를 들어 나노초를 지정하는 것이 더 편리합니다(섹션 5.7.2, 페이지 145 참조). „선택 사항“으로 표시된 단위는 intmax_t로 나타낼 수 있는 경우에만 정의됩니다. 이 인터페이스가 어떻게 구현되는지 살펴보겠습니다.

그 좋은 외관 뒤에 무엇이 있는지 보는 것 외에도, 이것은 우리가 std:::thread 인터페이스에 익숙해질 수 있게 해주며, 그 사용법의 간단한 예를 공부함으로써, 또한 우리에게 라이브러리의 단점을 보여줍니다. intmax_t는 서명된 정수 형식의 모든 값을 나타내는 서명된 정수 형식을 지정합니다.