Boost Users :
Subject: Re: [Boost-users] What is the effective way to use boost::asio::deadline_timer for udp socket receive_from?
From: TONGARI J (tongari95_at_[hidden])
Date: 2017-04-12 15:46:53
2017-04-12 19:17 GMT+08:00 jupiter via Boost-users <
> My program needs a sync udp socket send / receiver so I use the
> deadline_timer as timeout for udp socket receive_from on Debian Jessie:
> boost::asio::deadline_timer deadline(io_service,
> In checkDeadline function, when the timer expires, it calls socket.cancel,
> otherwise calls the deadline.async_wait(checkDeadline); again.
> Apparently when the program runs to socket.receive_from(), it is blocked
> and the timer is never called because both socket.receive_from and the
> timer in the same thread.
> I've been thinking to run the timer in another thread, but I checked
> Internet, there are comments said deadline_timer is not thread safe, please
> correct me if I am wrong here. It will be a simple solution for me if I can
> run timer on another thread. Anyone has other ideas to run the timer
Unfortunately, asio timers are useless with those blocking calls, you have
to use the async version (e.g. async_receive_from) and code in async
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net