programing

리눅스에서 GetTickCount()와 동등함

skycolor 2023. 10. 29. 19:09
반응형

리눅스에서 GetTickCount()와 동등함

저는 리눅스와 동등한 것을 찾고 있습니다.

현재 저는 에 호출하는 것으로 추정되는 파이썬을 사용하고 있습니다. 제 우려는 NTP와 같이 시계가 엉망이 되면 반환된 시간(유닉스 에포크)이 불규칙하게 변경될 수 있다는 것입니다.일정한 속도로 양의 값만 증가하는 간단한 공정 또는 시스템 벽 시간이면 충분합니다.

C나 파이썬에 그런 시간 함수가 있습니까?

C:에서 CLOCK_MONOTONIC을 사용할 수 있습니다.

struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0) {
 //error
}

Python 방식에 대해서는 이 질문을 참고하십시오. 파이썬에서 모노톤 시간을 얻으려면 이 질문을 참조하십시오.

작동하는 것 같습니다.

#include <unistd.h>
#include <time.h>

uint32_t getTick() {
    struct timespec ts;
    unsigned theTick = 0U;
    clock_gettime( CLOCK_REALTIME, &ts );
    theTick  = ts.tv_nsec / 1000000;
    theTick += ts.tv_sec * 1000;
    return theTick;
}

예, get_tick()은 내 응용프로그램의 백본입니다.각 '태스크'마다 하나의 상태 머신으로 구성되어 스레드를 사용하지 않고 멀티태스킹이 가능하며 프로세스 간 통신은 비차단 지연을 구현할 수 있습니다.

다음을 사용해야 합니다.clock_gettime(CLOCK_MONOTONIC, &tp);. 이 호출은 Windows(윈도우)의 GetTickCount()와 마찬가지로 시스템 시간 조정의 영향을 받지 않습니다.

네, 커널은 고해상도 타이머가 있지만 다릅니다.나는 당신이 이것을 휴대용 방식으로 포장하는 이상한 프로젝트의 출처를 살펴보는 것을 추천합니다.

C/C++부터 저는 주로#ifdef이것과 용도gettimeofday()마이크로초 해상도를 제공하는 리눅스 상에서.나는 나에게 두 배를 주는 것을 받기 때문에 종종 이것을 초 단위로 추가합니다.

언급URL : https://stackoverflow.com/questions/2958291/equivalent-to-gettickcount-on-linux

반응형