很不幸, 这没有可移植解决方法。下面是一些你可以在你的系统中寻找 的函数: clock(), delay(), ftime(), getimeofday(), msleep(), nap(), napms(), nanaosleep(), setitimer(), sleep(), Sleep(), times() 和 usleep。至少在 Unix 系统下, 函数 wait() 不是 你想要的。函数 select() 和 poll() (如果存在) 可以用来实现简单的延时。在 MS-DOS 下, 可以重新对系统计时器 和计时器中断编程。 这些函数中, 只有 clock() 在 ANSI 标准中。两次调用 clock() 之间的差分就是执行所用的时间, 如果 CLOCKS_PER_SEC 的值大于 1, 你可以得到精确度小于秒 的计时。但是, clock() 返回的是执行程序使用的处理器的时间, 在多任务系统下, 有可能 和真实的时间相差很多。
如果你需要实现一个延时, 而你只有报告时间的函数可用, 你可以 实现一个繁忙等待。但是这只是在单用户, 单任务系统下可选, 因为这个方法对于其它进程极不友好。在多任务系统下, 确保你 调用函数, 让你的进程在这段时间进入休眠状态。可用函数 sleep(), select() 或 poll() 和 alarm() 或 setitimer()实现。
对于非常短暂的延时, 使用一个空循环颇据有诱惑力:
long int i;
for (i = 0; i < 1000000; ++i)
;
但是请尽量抵制这个诱惑!因为, 经过你仔细计算的延时循环可能 在下个月因为更快的处理器出现而不能正常工作。更糟糕的是, 一个聪明的编译器可能注意到这个循环什么也没做, 而把它完全优化 掉。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。