Я работаю над проектом с использованием C ++.
Я хочу, чтобы TimerHandler вызывался через указанное время, но в то же время я не хочу блокировать текущий поток или любой код после io.run () в следующем коде:
#include <iostream>
#include <string>
#include <boost/format.hpp>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
class TimerTest
{
public:
static void PrintOutTimerHandler(const boost::system::error_code&, const std::string& message)
{
std::cout << "PrintOutTimerHandler called: " << ", message: " << message << std::endl;
}
void run()
{
boost::asio::io_service io;
boost::asio::deadline_timer dt(io, boost::posix_time::seconds(5));
std::cout << "Start:\t" << std::endl;
dt.async_wait(boost::bind(PrintOutTimerHandler, boost::asio::placeholders::error, std::string("here is the message")));
// Do some job here
for (int i = 0; i < 1000000; ++i)
++i, --i;
std::cout << "End:\t" << std::endl;
io.run();
std::cout << "When to reach here 1: " << std::endl;
}
};
int main()
{
TimerTest tt;
tt.run();
std::cout << "When to reach here 2: " << std::endl;
return 0;
}
/* Current output:
Start:
End:
PrintOutTimerHandler called: , message: here is the message
When to reach here 1:
When to reach here 2:
*/
/* Expected output:
Start:
End:
When to reach here 1:
When to reach here 2:
PrintOutTimerHandler called: , message: here is the message
*/
Кажется, я ясно дал понять. Мои вопросы:
- Если это можно решить без
представляя новую тему, как Flex
ActionScript, это лучший, но
Я думаю, нет (я думаю, ActionScript
используя скрытую ветку);
- Если мы должны
ввести дополнительную тему, чтобы сделать
работа, не могли бы вы записать
псевдокод для меня?
Спасибо.
Peter