2

私はstd::this_thread::sleep_for(std::chrono::seconds(1));一瞬寝ていました。スリープ中にシステム時間を逆方向に調整すると、調整した時間だけスリープ時間が長くなることがわかりました。

しかし、おそらく上記の動作を示すはずのstd::this_thread::sleep_for()とは異なり、 はシステム時間に関係なく動作するはずです。std::this_thread::sleep_until()

Visual C++ 2012 の の実装を見るとstd::this_thread::sleep_for()

template<class _Rep,
class _Period> inline
void sleep_for(const chrono::duration<_Rep, _Period>& _Rel_time)
{   // sleep for duration
stdext::threads::xtime _Tgt = _To_xtime(_Rel_time);
sleep_until(&_Tgt);
}

Visual C++ 2012 をsleep_for()使用して実装されてsleep_until()います。C++11 標準を検索しましたが、この種の実装は実際には禁止されていません。では、システム クロックの調整の影響を受けずに一定時間スリープ状態にするにはどうすればよいでしょうか。

4

1 に答える 1

0

おそらく、精度の相対タイマーであるタイマーキューを使用する必要があります。タイマーを待機可能にするには、この例のようにタイマー ルーチンでイベントをトリガーします。

于 2013-11-01T13:17:52.513 に答える