X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fboost%2Flibs%2Ffiber%2Fsrc%2Falgo%2Fround_robin.cpp;h=5ff1af2bc4476e516e0ad721aa0f2763546f93a9;hb=b32b81446b3b05102be0267e79203f59329c1d97;hp=ea69a8f28ae7d00a2c4c712c8027e2e63bb21b5d;hpb=215dd7151453fae88e6f968c975b6ce309d42dcf;p=ceph.git diff --git a/ceph/src/boost/libs/fiber/src/algo/round_robin.cpp b/ceph/src/boost/libs/fiber/src/algo/round_robin.cpp index ea69a8f28..5ff1af2bc 100644 --- a/ceph/src/boost/libs/fiber/src/algo/round_robin.cpp +++ b/ceph/src/boost/libs/fiber/src/algo/round_robin.cpp @@ -7,6 +7,7 @@ #include "boost/fiber/algo/round_robin.hpp" #include +#include #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX @@ -19,19 +20,21 @@ namespace algo { void round_robin::awakened( context * ctx) noexcept { BOOST_ASSERT( nullptr != ctx); - BOOST_ASSERT( ! ctx->ready_is_linked() ); + BOOST_ASSERT( ctx->is_resumable() ); ctx->ready_link( rqueue_); } context * round_robin::pick_next() noexcept { - context * victim{ nullptr }; + context * victim = nullptr; if ( ! rqueue_.empty() ) { victim = & rqueue_.front(); rqueue_.pop_front(); + boost::context::detail::prefetch_range( victim, sizeof( context) ); BOOST_ASSERT( nullptr != victim); BOOST_ASSERT( ! victim->ready_is_linked() ); + BOOST_ASSERT( victim->is_resumable() ); } return victim; } @@ -44,11 +47,11 @@ round_robin::has_ready_fibers() const noexcept { void round_robin::suspend_until( std::chrono::steady_clock::time_point const& time_point) noexcept { if ( (std::chrono::steady_clock::time_point::max)() == time_point) { - std::unique_lock< std::mutex > lk( mtx_); + std::unique_lock< std::mutex > lk{ mtx_ }; cnd_.wait( lk, [&](){ return flag_; }); flag_ = false; } else { - std::unique_lock< std::mutex > lk( mtx_); + std::unique_lock< std::mutex > lk{ mtx_ }; cnd_.wait_until( lk, time_point, [&](){ return flag_; }); flag_ = false; } @@ -56,7 +59,7 @@ round_robin::suspend_until( std::chrono::steady_clock::time_point const& time_po void round_robin::notify() noexcept { - std::unique_lock< std::mutex > lk( mtx_); + std::unique_lock< std::mutex > lk{ mtx_ }; flag_ = true; lk.unlock(); cnd_.notify_all();