Boost asio io_service vs io_context
Emily Wong
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)
1 Answer
You should use io_context, it replaces io_service.
According to boost issue #110:
io_serviceis 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_contextio_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_allocatorandboost::asio::associated_executor, which default to looking forget_allocator(), get_executor(),T::allocator_type,T::executor_typemembers 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.
1