Я пытаюсь создать секундомер на C ++, похожий на Java TimerTask . Мне нравится их библиотека, поскольку в нее уже встроены потоки. Я видел Boost Chrono , однако она все еще находится в разработке и предпочла бы не использовать ее.
Моя текущая реализация безуспешна (сейчас у меня память, так что это может быть немного похоже на псевдокод).
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()
и выводил текущее время. Кроме того, моя текущая реализация, похоже, блокирует остальную часть приложения, чего я определенно не хочу. Как бы я сделал обе эти вещи?
Я нуб, когда дело доходит до потоков, поэтому, пожалуйста, прости меня, если я сказал что-то, что кажется неправильным.