코드에서 타이머를 사용해야합니다.리눅스 타이머 CLOCK_PROCESS_CPU_ID가 작동하지 않습니다.
#define SECOND 1000000000
C가 2.25
같은 것입니다 그리고 내 문제는 다음과 같습니다 c_thread 새로운 타이머를 설정하는 것입니다 몇 가지 간단한 기능입니다
struct sigevent ec;
ec.sigev_notify = SIGEV_THREAD;
ec.sigev_value.sival_ptr = &c_timer;
ec.sigev_notify_function = c_thread;
ec.sigev_notify_attributes = NULL;
secs = floor(c);
nsecs = (long long) SECOND * (c - secs);
printf("%ds\t%lldns\n\n",secs,nsecs);
it1c.it_value.tv_sec = secs;
it1c.it_value.tv_nsec = nsecs;
it1c.it_interval.tv_sec = 0;
it1c.it_interval.tv_nsec = 0;
timer_create(CLOCK_PROCESS_CPUTIME_ID, &ec, &c_timer);
timer_settime(c_timer, 0, &it1c, NULL);
, SECOND는 : 나는 이런 식으로 뭔가있어 이 타이머는해야 할 때 c_thread를 호출하지 않는다. CLOCK_PROCESS_CPUTIME_ID를 CLOCK_REALTIME로 변경하면 모든 것이 정상이며 호출되지만 처음 사용할 때 아무 일도 일어나지 않습니다. 또한 clock_gettime 함수와 다른 CLOCK_REALTIME 타이머를 사용하여 CLOCK_PROCESS_CPUTIME_ID를 확인하고 시계의 값이 my it_value에 도달했습니다.
어떤 아이디어가 잘못되었을 수 있습니까?
두 번째 질문 : 타이머를 사용하는 스레드라는 함수에 인수를 전달할 방법이 있습니까?
[MCVE]를주십시오. 'CPUTIME'은 프로세스가 소비하는 CPU 시간을 나타냅니다 (분명한 사실을 말함). 프로그램이 무기한으로 잠자기 상태가되면 CPU 시간이 2.5 초에 도달하지 않습니다. 타이머를 설정 한 후에 프로그램이 무엇을하는지 알아야합니다. – kaylum