Reputation: 1300
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)
Upvotes: 33
Views: 21614
Reputation: 85341
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.
Upvotes: 40