boost::xtime
う〜ん。昨日のCPU100%対策は不完全でした。
boost::sleep()の引数、boost::xtimeは次のような構造体です。
struct xtime { xtime_sec_t sec; xtime_nsec_t nsec; };
使用する場合は、まずboost::xtime_get()で現在時刻を取得し、secとnsecを弄るわけですが、
boost::xtime xt; boost::xtime_get(xt, boost::TIME_UTC); xt.nsec += 100*1000*1000; // 100ミリ秒足したつもり
nsecが1秒を超えたら、secに繰り上げないとダメです。似たような構造体はたくさんあるんですが、使うたびに間違えてる気がする。
間違えないようにライブラリ化してみました。
#include <hamigaki/thread/utc_time.hpp> hamigaki::thread::utc_time t; // 現在時刻で初期化される t += hamigaki::thread::milliseconds(100); // 繰り上がりもOK