いくつかの Windows コンピューターで、2 つのコンピューターを相互に呼び出して ::GetTickCount() を呼び出すと、1610619236 ミリ秒 (約 18 日) の差が返されることがわかりました。これは、og int/unsigned int の不一致のラップアラウンドによるものではありません。Visual C++ 2015/2017 を使用しています。
他の誰かがこの動作を見たことがありますか? 何がこのような動作を引き起こす可能性があるかについて、誰かが考えを持っていますか?
よろしくジョン
バグを示すコード サンプル:
class CLTemp
{
DWORD nLastCheck;
CLTemp()
{
nLastCheck=::GetTickCount();
}
//Service is called every 200ms by a timer
void Service()
{
if( ::GetTickCount() - nLastCheck > 20000 )//check every 20 sec
{
//On some Windows machines, after an uptime of 776 days, the
//::GetTickCount() - nLastCheck gives a value of 1610619236
//(corresponding to around 18 days)
nLastCheck = ::GetTickCount();
}
}
};