【问题标题】:Sleep function in Windows, using CWindows中的睡眠功能,使用C
【发布时间】:2011-03-23 16:33:37
【问题描述】:

我需要在 Windows 中休眠我的程序。什么头文件有休眠功能?

【问题讨论】:

    标签: c windows sleep


    【解决方案1】:

    MSDN: 头文件:Winbase.h(包括 Windows.h)

    【讨论】:

    • 当我包含 windows.h 时,我的编译器给出“错误:省略参数名称”和“错误:',' 标记之前的预期表达式”
    • @Snigger 发布一个简短的示例来演示这一点,并告诉我们您使用的是什么编译器。
    • #include void writeData(result * res ,char OUT){ } int main(){ return 1; } 在 '' 令牌之前给出“错误:预期的')',我正在使用 GCC (mingw)
    • @Snigger 您的程序没有声明“结果”类型——与 windows 或睡眠无关。它没有给出你所说的错误消息(它给出了不同的错误消息)。
    • 这不是关于我的回答的讨论/cmets。这是一个完全切题的讨论,属于它自己的答案。
    【解决方案2】:

    用途:

    #include <windows.h>
    
    Sleep(sometime_in_millisecs); // Note uppercase S
    

    这里有一个小例子,它使用MinGW 编译并按照它在锡上说的做:

    #include <windows.h>
    #include <stdio.h>
    
    int main() {
        printf( "starting to sleep...\n" );
        Sleep(3000); // Sleep three seconds
        printf("sleep ended\n");
    }
    

    【讨论】:

    • "查看了 42374 次" - 所以很明显很多人也有这个问题(当我主要做一些 Linux/POSIX 编程时,我怎么知道在我的谷歌搜索中添加“msdn”前缀现在?)
    【解决方案3】:

    SleepEx 函数(参见http://msdn.microsoft.com/en-us/library/ms686307.aspx)是您的程序直接或间接创建窗口(例如使用某些 COM 对象)时的最佳选择。在简单的情况下,您也可以使用Sleep

    【讨论】:

      【解决方案4】:

      在您想要忙等待时,在代码开头包含以下函数。这与睡眠不同,因为在此函数运行时进程将使用 100% 的 cpu。

      void sleep(unsigned int mseconds)
      {
          clock_t goal = mseconds + clock();
          while (goal > clock())
              ;
      }
      

      请注意,此函数的名称 sleep 具有误导性,因为 CPU 根本不会休眠。

      【讨论】:

      • 1.这不能回答发帖者的问题 2。这是错误的,因为它仍然是一个繁忙的循环(有或没有“for”循环)。
      • 赞成。我在 Windows C 中寻找一些睡眠功能,除了 Sleep()。这工作正常。谢谢。
      • 这不是睡眠,这是“在一个紧密的循环中保持忙碌”,无论如何都会给 CPU 带来额外的负担。睡眠释放 CPU 来做其他事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多