Move mb() outside of the synchronize C.S.
[urcu.git] / urcu-qsbr.c
index e077eac8f2b4b4bc7c44cadaf0f96d012be60fe3..b387536adc6ef923d8254934b41955389002f0fc 100644 (file)
@@ -156,12 +156,12 @@ void synchronize_rcu(void)
        if (was_online)
                _rcu_thread_offline();
 
-       internal_urcu_lock();
        force_mb_all_threads();
+       internal_urcu_lock();
        STORE_SHARED(urcu_gp_ctr, urcu_gp_ctr + 2);
        wait_for_quiescent_state();
-       force_mb_all_threads();
        internal_urcu_unlock();
+       force_mb_all_threads();
 
        if (was_online)
                _rcu_thread_online();
This page took 0.022275 seconds and 4 git commands to generate.