diff --git a/src/detail/spinlock.cpp b/src/detail/spinlock.cpp index 38b4a8d7..38ebd7b3 100644 --- a/src/detail/spinlock.cpp +++ b/src/detail/spinlock.cpp @@ -22,6 +22,7 @@ spinlock::spinlock() : void spinlock::lock() { + bool is_fiber = 0 != scheduler::instance()->active().get(); for (;;) { // access to CPU's cache @@ -30,7 +31,7 @@ spinlock::lock() while ( LOCKED == state_) { // busy-wait - if ( scheduler::instance()->active() ) + if ( is_fiber) scheduler::instance()->yield(); else this_thread::yield();