diff options
Diffstat (limited to 'src/third_party/boost-1.60.0/boost/thread/executors/scheduling_adaptor.hpp')
-rw-r--r-- | src/third_party/boost-1.60.0/boost/thread/executors/scheduling_adaptor.hpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/third_party/boost-1.60.0/boost/thread/executors/scheduling_adaptor.hpp b/src/third_party/boost-1.60.0/boost/thread/executors/scheduling_adaptor.hpp new file mode 100644 index 00000000000..ac0a0acbce8 --- /dev/null +++ b/src/third_party/boost-1.60.0/boost/thread/executors/scheduling_adaptor.hpp @@ -0,0 +1,51 @@ +// Copyright (C) 2014 Ian Forbed +// Copyright (C) 2014 Vicente J. Botet Escriba +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_THREAD_EXECUTORS_SCHEDULING_ADAPTOR_HPP +#define BOOST_THREAD_EXECUTORS_SCHEDULING_ADAPTOR_HPP + +#include <boost/thread/executors/detail/scheduled_executor_base.hpp> + +namespace boost +{ +namespace executors +{ + + template <typename Executor> + class scheduling_adpator : public detail::scheduled_executor_base<> + { + private: + Executor& _exec; + thread _scheduler; + public: + + scheduling_adpator(Executor& ex) + : super(), + _exec(ex), + _scheduler(&super::loop, this) {} + + ~scheduling_adpator() + { + this->close(); + _scheduler.join(); + } + + Executor& underlying_executor() + { + return _exec; + } + + private: + typedef detail::scheduled_executor_base<> super; + }; //end class + +} //end executors + + using executors::scheduling_adpator; + +} //end boost +#endif |