2
我正在嘗試每10 ms週期運行一次任務。在執行任務之前,我想檢查clock_nanosleep
的一致性。我花了10個值來檢查clock_nanosleep
正在睡覺的時間,但它們在19-22毫秒之間變化,應該是10毫秒。當clock_nanosleep配置爲睡眠10 ms時,爲什麼睡眠20 ms?
我正在使用SCHED_FIFO,pri-98運行此線程,並在Linux中啓用了HRTimers。目前,我正在使用帶有RT Patch的3.14.29 Linux Kernel。除了HRTIMERS之外,clock_nanosleep
還需要Linux中的任何額外配置嗎?
下面是我運行的代碼片段:
struct timespec arr[20];
while(1) {
clock_gettime(CLOCK_MONOTONIC,&check1);
if(i<20) {
arr[i].tv_sec = check1.tv_sec;
arr[i].tv_nsec = check1.tv_nsec;
++i;
}
check1.tv_nsec += p_CT->period;
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &check1, NULL);
clock_gettime(CLOCK_MONOTONIC,&check);
if(i<20) {
arr[i].tv_sec = check.tv_sec;
arr[i].tv_nsec = check.tv_nsec;
++i;
}
}
什麼是'p_CT-> period'的價值? –
「clock_getres」的結果也可能是感興趣的 - 哪個分辨率對於時鐘是實際的。 – Tsyvarev
Hi Roman Zaytsev p_CT-> period = 10000;對於10毫秒的週期性 – anikhan