Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 5c04e829e26d10e1f249a5a93e00eace2074d254)
+++ libcfa/src/concurrency/kernel.cfa	(revision fc59df78713084cc115bdff89aa7588fe40bf955)
@@ -488,5 +488,12 @@
 
 	ready_schedule_lock();
-		$thread * thrd = pop_slow( this );
+		$thread * thrd;
+		for(25) {
+			thrd = pop_slow( this );
+			if(thrd) goto RET;
+		}
+		thrd = pop_search( this );
+
+		RET:
 	ready_schedule_unlock();
 
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 5c04e829e26d10e1f249a5a93e00eace2074d254)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision fc59df78713084cc115bdff89aa7588fe40bf955)
@@ -289,5 +289,5 @@
 
 //-----------------------------------------------------------------------
-// pop thread from the ready queue of a cluster
+// pop thread from the local queues of a cluster
 // returns 0p if empty
 // May return 0p spuriously
@@ -295,8 +295,14 @@
 
 //-----------------------------------------------------------------------
-// pop thread from the ready queue of a cluster
+// pop thread from any ready queue of a cluster
+// returns 0p if empty
+// May return 0p spuriously
+__attribute__((hot)) struct $thread * pop_slow(struct cluster * cltr);
+
+//-----------------------------------------------------------------------
+// search all ready queues of a cluster for any thread
 // returns 0p if empty
 // guaranteed to find any threads added before this call
-__attribute__((hot)) struct $thread * pop_slow(struct cluster * cltr);
+__attribute__((hot)) struct $thread * pop_search(struct cluster * cltr);
 
 //-----------------------------------------------------------------------
Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision 5c04e829e26d10e1f249a5a93e00eace2074d254)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision fc59df78713084cc115bdff89aa7588fe40bf955)
@@ -344,5 +344,6 @@
 	}
 
-	__attribute__((hot)) struct $thread * pop_slow(struct cluster * cltr) {
+	__attribute__((hot)) struct $thread * pop_slow(struct cluster * cltr) { return pop_fast(cltr); }
+	__attribute__((hot)) struct $thread * pop_search(struct cluster * cltr) {
 		return search(cltr);
 	}
@@ -436,10 +437,9 @@
 
 	__attribute__((hot)) struct $thread * pop_slow(struct cluster * cltr) with (cltr->ready_queue) {
-		for(25) {
-			unsigned i = __tls_rand() % lanes.count;
-			$thread * t = try_pop(cltr, i __STATS(, __tls_stats()->ready.pop.steal));
-			if(t) return t;
-		}
-
+		unsigned i = __tls_rand() % lanes.count;
+		return try_pop(cltr, i __STATS(, __tls_stats()->ready.pop.steal));
+	}
+
+	__attribute__((hot)) struct $thread * pop_search(struct cluster * cltr) with (cltr->ready_queue) {
 		return search(cltr);
 	}
