JavaのTimerTaskに似たストップウォッチをC++で作成しようとしています。すでにスレッドが組み込まれているので、彼らのライブラリが好きです。BoostChronoを見たことがありますが、まだ開発中であり、使用したくないと考えています。
私の現在の実装は運が悪かった(私は今メモリを使っているので、これは少し疑似コードのようかもしれない)。
boost::asio::io_service io;
boost::asio::deadline_timer timer(io);
Initialize()
{
boost::shared_ptr<boost::thread> thread = boost::shared_ptr<boost::thread>(
new boost::thread(
boost::bind(&boost::asio::io_service::run, &io)
);
}
Start()
{
timer.async_wait(
bind(&HandleTimerEvent, this, asio::placeholders::error)
);
}
Stop()
{
timer.cancel
}
Tick()
{
cout << "THE TIME IS: " << timer.current_time << endl; // Pseudo code for current_time.
}
HandleTimerEvent(boost::system::error_code& e)
{
cout << "Timer has ended: " << e << endl;
}
私が欲しいのは、スレッドに継続的に呼び出しTick()
て現在の時刻を出力させることです。また、私の現在の実装には、アプリケーションの残りの部分をブロックするスレッドがあるようです。これは、私が絶対に望んでいないことです。これらの両方をどのように行うのでしょうか?
私は糸脱毛に関しては初心者なので、正しくないと思われることを言った場合はご容赦ください。