本文主要是介绍Boost Asio总结(7)class strand,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
strand 保证异步代码在多线程环境中正确执行,无须使用互斥量,好比一组handler的锁,加入线程保护,保证handler不会存在线程并发访问。
多个线程使用io_service需要strand保证线程安全。
class strand
{
//返回contextexecution_context& context() const BOOST_ASIO_NOEXCEPT{return executor_.context();}//要求异步执行一个handlertemplate <typename Function, typename Allocator>void dispatch(BOOST_ASIO_MOVE_ARG(Function) f, const Allocator& a) const{detail::strand_executor_service::dispatch(impl_,executor_, BOOST_ASIO_MOVE_CAST(Function)(f), a);}//要求异步执行一个handler/// Request the strand to invoke the given function object. template <typename Function, typename Allocator>void post(BOOST_ASIO_MOVE_ARG(Function) f, const Allocator& a) const{detail::strand_executor_service::post(impl_,executor_, BOOST_ASIO_MOVE_CAST(Function)(f), a);}bool running_in_this_thread() const BOOST_ASIO_NOEXCEPT{return detail::strand_executor_service::running_in_this_thread(impl_);}
这篇关于Boost Asio总结(7)class strand的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!