I am using boost asio library with c++. I found that io_service and io_context have similarities. for example both have method run and others. Could someone please detail differences between these two classes( like usage, conceptual idea, structural difference et.c)
You should use io_context
, it replaces io_service
.
According to boost issue #110:
io_service
is deprecated. Yes, you should useio_context
. Beware that the "old" API is deprecated as well (e.g.io_service.post()
, you should usepost(io_context, handler)
).. . .
io_service
->io_context
io_service.post()
->io_context.get_executor().post()
io_service.dispatch()
->io_context.get_executor().dispatch()
io_service::strand
->strand<io_context::executor_type>
there were also changes to composed operation customization hooks - there are only 2 now -
boost::asio::associated_allocator
andboost::asio::associated_executor
, which default to looking forget_allocator()
,get_executor()
,T::allocator_type
,T::executor_type
members of the composed operation function object.This is not a complete list.
These changes are related to Networking TS compatibility.
Seems to have been added in Boost 1.66.
© 2022 - 2024 — McMap. All rights reserved.
1.71
they are still usingio_service
: boost.org/doc/libs/1_71_0/doc/html/boost_process/tutorial.html – Colmar