这些函数中, 只有 clock() 在 ANSI 标准中。两次调用 clock() 之间的差分就是执行所用的时间, 如果 CLOCKS_PER_SEC 的值大于 1, 你可以得到精确度小于秒 的计时。但是, clock() 返回的是执行程序使用的处理器的时间, 在多任务系统下, 有可能 和真实的时间相差很多。
如果你需要实现一个延时, 而你只有报告时间的函数可用, 你可以 实现一个繁忙等待。但是这只是在单用户, 单任务系统下可选, 因为这个方法对于其它进程极不友好。在多任务系统下, 确保你 调用函数, 让你的进程在这段时间进入休眠状态。可用函数 sleep(), select() 或 poll() 和 alarm() 或 setitimer()实现。
对于非常短暂的延时, 使用一个空循环颇据有诱惑力:
long int i; for (i = 0; i < 1000000; ++i) ;但是请尽量抵制这个诱惑!因为, 经过你仔细计算的延时循环可能 在下个月因为更快的处理器出现而不能正常工作。更糟糕的是, 一个聪明的编译器可能注意到这个循环什么也没做, 而把它完全优化 掉。
参考资料: [H&S, Sec. 18.1 pp. 398-9]; [PCS, Sec. 12 pp. 197-8,215-6]; [POSIX, Sec. 4.5.2]。
翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)