Don't mark reader thread as being waited for if non-contended
authorMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Sat, 26 Sep 2009 22:26:50 +0000 (18:26 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Sat, 26 Sep 2009 22:26:50 +0000 (18:26 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
urcu.c

diff --git a/urcu.c b/urcu.c
index a9ebf597858b063d20223b6ac48331a7a3a730db..f74304ca51fa3c2c0aed789585192b06646eb5c9 100644 (file)
--- a/urcu.c
+++ b/urcu.c
@@ -220,6 +220,10 @@ void wait_for_quiescent_state(void)
        for (index = registry; index < registry + num_readers; index++) {
                int wait_loops = 0;
 
+               if (likely(!rcu_old_gp_ongoing(
+                               &index->urcu_reader_status->active_readers)))
+                       continue;
+
                index->urcu_reader_status->gp_waiting = 1;
 #ifndef HAS_INCOHERENT_CACHES
                while (rcu_old_gp_ongoing(
This page took 0.025917 seconds and 4 git commands to generate.