【问题标题】:Difference between delay() and sleep() in C?C中延迟()和睡眠()之间的区别?
【发布时间】:2015-10-13 21:11:14
【问题描述】:

delay() 和 sleep() 函数都会将系统挂起一段时间,delay 以毫秒为参数,而 sleep 以秒为参数。除此之外,这两个功能之间有什么区别吗?其中,哪个给出更准确的结果?

【问题讨论】:

  • 这些都不是标准库函数。你指的是哪个图书馆?
  • 我认为通常sleep() 在睡眠期间会释放处理器,而delay() 需要 CPU 使用率,但我不太确定。
  • Dos.h 不是标准库的一部分。并且这两个函数只保证会产生近似的延迟。所有其他副作用均由实现定义。
  • 如果您不理解我对您的 OTHER 问题的回答,请在 cmets 中提问如何?
  • 像这样...突然提到dos.h意味着这个问题是关于MS DOS的。现在没人会期待。 @RohanGayen 你应该明确这些东西并添加适当的标签......delay() 和 sleep() 都不是标准的 C 函数。

标签: c delay sleep


【解决方案1】:

它们做同样的事情,只是一个睡几秒,另一个睡几毫秒。

你应该选择Reference to std::this_thread::sleep_for:

std::this_thread::sleep_for

如果可以的话,用 c++ 代替。 windows.h 有睡眠,unix 有睡眠。

这是在网上找到的另一个可能更适合您需求的实现:

#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS__) || defined(__TOS_WIN__)

  #include <windows.h>

  inline void delay( unsigned long ms )
    {
    Sleep( ms );
    }

#else  /* presume POSIX */

  #include <unistd.h>

  inline void delay( unsigned long ms )
    {
    usleep( ms * 1000 );
    }

#endif

【讨论】:

  • 我猜他使用的是Borland Turbo C++ 3.0,所以他不会有&lt;thread&gt;。
【解决方案2】:

Sleep 释放指定数量的 CPU,以便其他进程可以执行。 虽然延迟只是忙于等待金额到期,然后在到期后继续,但在此期间它不执行任何其他过程。

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2017-07-16
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多