diff --git a/lib/base/io-engine.cpp b/lib/base/io-engine.cpp index d3197790e..c00bd7819 100644 --- a/lib/base/io-engine.cpp +++ b/lib/base/io-engine.cpp @@ -25,7 +25,7 @@ CpuBoundWork::CpuBoundWork(boost::asio::yield_context yc) if (availableSlots < 1) { ioEngine.m_CpuBoundSemaphore.fetch_add(1); - ioEngine.m_AlreadyExpiredTimer.async_wait(yc); + IoEngine::YieldCurrentCoroutine(yc); continue; } @@ -64,7 +64,7 @@ IoBoundWorkSlot::~IoBoundWorkSlot() if (availableSlots < 1) { ioEngine.m_CpuBoundSemaphore.fetch_add(1); - ioEngine.m_AlreadyExpiredTimer.async_wait(yc); + IoEngine::YieldCurrentCoroutine(yc); continue; } diff --git a/lib/base/io-engine.hpp b/lib/base/io-engine.hpp index dabd6730b..684d3ac39 100644 --- a/lib/base/io-engine.hpp +++ b/lib/base/io-engine.hpp @@ -119,6 +119,12 @@ public: ); } + static inline + void YieldCurrentCoroutine(boost::asio::yield_context yc) + { + Get().m_AlreadyExpiredTimer.async_wait(yc); + } + private: IoEngine();