Boost logo

Boost :

From: Richard Hodges (hodges.r_at_[hidden])
Date: 2020-09-07 10:12:13


If your implementation is single threaded, you don't need to worry about
concurrency issues at all. All completion handlers will be scheduled to run
sequentially.

In other words, no need for a mutex.

If you later decide to make your program multi-threaded (i.e. multiple
threads per io_context) then the idiomatic method to control concurrency is
to use an asio::strand<asio::any_io_executor> as your executor type for
each io_enabled concern (such as a connection).

In asio, (and net.ts) the strand is a special executor adapter that
guarantees that although multiple completion handlers can execute
concurrently through the *underlying executor*, they can only complete
*sequentially* through the strand which is *adapting* that underlying
executor.

On Mon, 7 Sep 2020 at 11:54, Jupiter via Boost <boost_at_[hidden]>
wrote:

> Hi,
>
> I used boost::asio::io_service for a single thread implementation but
> with multiple boost::asio::deadline_timer objects, because it is a
> single thread, I don't think I need to use boost::mutex to lock and
> unlock tasks running by deadline_timer, am I wrong about it?
>
> Thank you.
>
> Kind regards,
>
> jupiter
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>

-- 
Richard Hodges
hodges.r_at_[hidden]
office: +442032898513
home: +376841522
mobile: +376380212

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk