mirror of
https://github.com/boostorg/fiber.git
synced 2026-02-17 13:42:21 +00:00
Set fiber_properties::sched_algo_ every time through awakened().
Instead of setting a fiber_properties subclass's sched_algo_ back pointer once at construction time, unconditionally set it every time that fiber becomes READY (and is therefore passed to sched_algorithm::awakened()). This handles the case in which that fiber migrates to a different thread with a different sched_algorithm subclass instance. Break out fiber_properties::notify() implementation to a separate .cpp implementation file so it can bring in algorithm.hpp. We don't want properties.hpp to depend on algorithm.hpp.
This commit is contained in:
28
src/properties.cpp
Normal file
28
src/properties.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright Oliver Kowalke 2013.
|
||||
// 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)
|
||||
|
||||
#include <boost/assert.hpp>
|
||||
#include "boost/fiber/properties.hpp"
|
||||
#include "boost/fiber/algorithm.hpp"
|
||||
#include "boost/fiber/fiber_manager.hpp"
|
||||
|
||||
#ifdef BOOST_HAS_ABI_HEADERS
|
||||
# include BOOST_ABI_PREFIX
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace fibers {
|
||||
|
||||
void fiber_properties::notify()
|
||||
{
|
||||
BOOST_ASSERT(sched_algo_);
|
||||
sched_algo_->property_change(fiber_, this);
|
||||
}
|
||||
|
||||
}} // boost::fiber
|
||||
|
||||
#ifdef BOOST_HAS_ABI_HEADERS
|
||||
# include BOOST_ABI_SUFFIX
|
||||
#endif
|
||||
Reference in New Issue
Block a user