From 19059fb1cd9df7b23e4920d27cbc910f1045211a Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Sun, 29 Dec 2013 11:34:24 +0100 Subject: [PATCH] ioptimize test for fiber in spinlock --- src/detail/spinlock.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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();