Use an asio::deadline_timer
Example:
asio::io_service m_ioService;
asio::deadline_timer * m_timer;
m_timer = new asio::deadline_timer(m_ioService);
m_timer->expires_from_now( boost::posix_time::seconds(t) );
m_timer->async_wait( boost::bind(&Foo:handle_timeout, this, asio::placeholders::error) );
asio::async_read( *m_socket,
asio::buffer( m_msg.header(), m_msg.header_length() ),
boost::bind(&Foo::handle_read_header, this, asio::placeholders::error) );
This is a cut and paste from my code, if it isn't so clear I'll explain deeply.
Tks
----- Messaggio originale -----
Da: Arkadiy Vertleyb