私は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 標準を検索しましたが、この種の実装は実際には禁止されていません。では、システム クロックの調整の影響を受けずに一定時間スリープ状態にするにはどうすればよいでしょうか。