Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;cout命令被冻结_C++_Visual Studio 2012 - Fatal编程技术网

C++ c++;cout命令被冻结

C++ c++;cout命令被冻结,c++,visual-studio-2012,C++,Visual Studio 2012,我想打印出特定时刻的当前小时数,我每5秒检查一次当前分钟数,然后进入睡眠状态。听起来很简单,但遇到了一个问题:2小时后,“cout”行被冻结,下面是代码: #include "stdafx.h" #include <ctime> #include <windows.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { struct tm ti

我想打印出特定时刻的当前小时数,我每5秒检查一次当前分钟数,然后进入睡眠状态。听起来很简单,但遇到了一个问题:2小时后,“cout”行被冻结,下面是代码:

#include "stdafx.h"
#include <ctime>
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    struct tm timenow;
    time_t t;
    do 
    {
        t = time(0);
        localtime_s(&timenow,&t);
        if (timenow.tm_min == 30)
        {
            cout << "current hour = " << timenow.tm_hour << endl;//frozen here
        }
        Sleep(5000);
    } while (!(timenow.tm_hour == 20 && timenow.tm_min == 00 ));
    return 0;
}

有人能帮我吗?提前谢谢

假设Sleep()没有任何指定的粒度,您希望
if(timenow.tm_min==30)
为真的频率有多高;每次时钟到达30分钟,但cout在一分钟内被调用12次,因为它的睡眠时间为5000毫秒。正如我所指出的,Sleep()并不是那么准确。谢谢,但我仍然不明白它是如何导致“cout”的冻结的。
            /* write the lf buf and update total */
            if ( WriteFile( (HANDLE)_osfhnd(fh),
                        lfbuf,
                        (int)(q - lfbuf),
                        (LPDWORD)&written,
                        NULL) )