在下面的C ++程序中,我使用函数usleep()
睡眠1.5秒。我通过2种等效方法实现了这一点,如下所示:
#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
//METHOD #1
cout<<"sleep"<<endl;
usleep(1500000);
cout<<"wake up"<<endl;
//METHOD #2
cout<<"sleep"<<endl;
for(int i=0; i<1500000; i++)
usleep(1);
cout<<"wake up"<<endl;
return 0;
}
但是结果如下:
实际上,我将需要第二种方法。根据这个Answer,我认为我需要一个比usleep()
更准确的功能。有人可以帮忙吗?
答案 0 :(得分:3)
来自the documentation(重点是我)
usleep()函数暂停执行以下操作的调用线程: (至少)微秒。睡眠时间可能会稍微延长 通过任何系统活动或通过处理呼叫所花费的时间或 系统计时器的粒度。
所以换句话说,之所以需要更长的时间,是因为它现在要“入睡”并“唤醒” 1500000次,而不是一次,并且睡眠时间如此短,因此开销可能比实际的微秒睡眠。