clock
功能<ctime>
:
返回由程序所消耗的处理器时间。
返回的值以时钟滴答表示,其单位为 恒定但系统特定长度(关系为 CLOCKS_PER_SEC时钟滴答每秒)的时间。
reference
所以,基本上它返回,因为程序的启动处理器的周期数通过。处理器时间周期是由process执行的处理器指令的数量,但它不包含IO时间,并且不包含任何不使用CPU的情况。
CLOCKS_PER_SEC
是机器执行的CPU滴答的平均数量,因机器而异,即使它(可能)会随时变化,因为执行太多的IO将导致每个进程总体减少CLOCKS_PER_SEC
,因为更多的时间将会没有使用CPU。
而且这样一句话:(end-start)/CLOCKS_PER_SEC) = !seconds
是不正确的,因为正确的实现是
while (((end-start)/CLOCKS_PER_SEC) != seconds)
end = clock();
是否的busy waiting的伎俩,计划将被困这个while循环,直到seconds
秒将使用CPU时钟传递和CLOCKS_PER_SEC确定时间流逝。
虽然我会建议其更改为:
while (((end-start)/CLOCKS_PER_SEC) < seconds)
end = clock();
因为如果过程具有低优先级,或者计算机太忙处理许多流程的机会是一个CPU蜱可以采取一秒钟以上(可能时系统对于一些占用大量资源并具有足够高优先级以导致CPU匮乏的漏洞程序而言,这种情况已经崩溃了)。
最后,我不建议使用它,因为你仍然在使用CPU在等待这可以通过使用睡眠工具讨论here
而且可以避免如果由于某种原因,即使它是不可能的,(与BG过程高优先级)在不好的时间抢占循环,'(end-start)/ CLOCKS_PER_SEC'可能永远不会**等于**到'seconds'。 '((结束 - 开始)/ CLOCKS_PER_SEC)<秒'会更好。 –
我希望实际的代码使用'!= seconds'而不是'=!seconds'。 –
你可以申请代码给你的是取决于你的等待对象。如果您的等待时间总是少于10毫秒,您可以;否则,使用'sleep()'。 – Holsety