1
我需要在線程函數內部創建精確的延遲(大約100us)。我嘗試過使用nanosleep函數,但它不夠準確。我爲了創建一個100us的延遲Y讀取一些後如何讀取硬件1MHz的計時器,所以在我的函數試圖這樣的事情:在樹莓派上使用定時器延遲
prev = *timer;
do {
t = *timer;
} while ((t - prev) < 100);
然而,該方案似乎停留在循環中。但是,如果我插入它的工作循環中的小納米睡眠(但失去精度):
sleeper.tv_sec = 0;
sleeper.tv_nsec = (long)(1);
prev = *timer;
do {
nanosleep (&sleeper, &dummy);
t = *timer;
} while ((t - prev) < 500);
我沿着程序的立場嘗試的第一個版本,它的工作原理,但在我的主程序,在這裏面它沒有的線程。
有誰知道第一個版本(沒有小納秒睡眠)不起作用?