【发布时间】:2015-07-21 19:55:49
【问题描述】:
我想使用空循环实现延迟功能。但是完成一次循环所需的时间取决于编译器和机器。我希望我的程序自行确定时间并将程序延迟指定的时间。谁能给我任何想法如何做到这一点? N. B. 有一个名为 delay() 的函数将系统挂起指定的毫秒数。不使用这个功能是否可以挂起系统?
【问题讨论】:
-
delay() 函数取决于操作系统和机器。它不是 C 语言的什么神奇功能,它只是 ANSI 或 POSIX 采用的标准接口。它必须在特定硬件的内核级别上实现,这意味着它也是(编译器/机器相关的)。
-
如果您不是在内核级别的编程,即 unix、windows 等中的用户应用程序,为什么要重新发明轮子?如果您处于内核级别,则必须了解硬件如何使用带有计时器的寄存器等。
-
从 C11 开始,该标准现在提出了一个独立于操作系统的接口
thrd_sleep。不幸的是,并非所有编译器都实现了这一点,但即将到来。 -
Linux 中的 usleep()/nanosleep() 或 Windows 中的 Sleep() 肯定会起作用,但我的经验是,任何时候你认为你想要在程序中出现这样的延迟,这是因为你没有考虑到你真正需要的东西。你到底想完成什么?