Re: DX.WaitTimerについて ( No.1 ) |
- 名前:yumetodo 日時:2020/01/28 14:53
WaitTimerはキーボード等各種状態更新を行っていたような・・・?
|
Re: DX.WaitTimerについて ( No.2 ) |
- 名前:管理人 日時:2020/01/28 23:55
System.Threading.Thread.Sleep はスリープ( CPUを動作させないで指定時間経過するのを待つ )ですが、
WaitTimer は以下のような動作をしているため、指定された時間が 4msec 未満の場合は全くスリープしません
int WaitTimer( int WaitTime )
{
if( WaitTime > 4 )
{
while( 残り時間が4msec以上だったらループ )
{
if( ProcessMessage() != 0 )
{
return 0;
}
Sleep( 1 ); // 1msecスリープする
}
}
while( 残り時間が0msecではなかったらループ )
{
}
return 0;
}
現在のOSでは、例えば 15msec ぴったり処理を止めたい、と思ったときは
System.Threading.Thread.Sleep(15);
とすれば正確に 15msec ぴったり処理を止めることができるかもしれませんが、
以前は精度が甘く、Sleep(15);としても実際には16msec経過してしまったり、逆に
14msecしか経過せずに関数から出てきてしまったりしていたので、より正確に待つ
ために上記のような実装になっています
|
Re: DX.WaitTimerについて ( No.3 ) |
- 名前:ボクシ(解決) 日時:2020/01/29 16:18
管理人様
ご返答頂き有難うございました。
4ms以下では動作していないという事で、納得しました。
|
Re: DX.WaitTimerについて ( No.4 ) |
- 名前:管理人 日時:2020/01/29 23:22
いえ、4ms以下でも動作( WaitTime で指定した時間、関数から出てこない、という動作 )はしています
ただ、Sleep と異なり CPU は休んでいませんので、CPU使用率を下げる効果はありません
|