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