C++ c++;cout命令被冻结
我想打印出特定时刻的当前小时数,我每5秒检查一次当前分钟数,然后进入睡眠状态。听起来很简单,但遇到了一个问题:2小时后,“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
#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) )