J'essaie de créer un chronomètre en C++, quelque chose de similaire à Java TimerTask. J'aime leur bibliothèque car elle a déjà un thread intégré. J'ai vu Boost Chrono, cependant, il est encore en développement et préfèrerait ne pas l'utiliser.C++ Threaded Stopwatch
Ma mise en œuvre actuelle a été sans succès (je vais par la mémoire en ce moment, donc cela pourrait être un peu comme pseudo code).
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;
}
Ce que je voudrais avoir est d'avoir le fil en permanence appeler Tick()
et imprimer l'heure actuelle. En outre, ma mise en œuvre actuelle semble avoir le fil comme bloquer le reste de l'application, ce qui est certainement quelque chose que je ne veux pas. Comment ferais-je ces deux choses? Je suis un noob quand il s'agit de filetage alors s'il vous plaît pardonnez-moi si j'ai déclaré quelque chose qui ne semble pas correct.
Votre deuxième point était l'un de ces moments de slap-the-front. Mais ça fonctionne bien maintenant. Je vous remercie. – elmt
:) cool, tout le calendrier des événements est difficile à comprendre, m'a pris un moment aussi ... – Nim