image/svg+xml
synchronize_rcu()
WRITE_ONCE(a, 1);
WRITE_ONCE(b, 1);
r1 = READ_ONCE(a);
WRITE_ONCE(c, 1);
WRITE_ONCE(d, 1);
r2 = READ_ONCE(c);
thread0()
thread1()
thread2()
rcu_read_lock();
rcu_read_lock();
rcu_read_unlock();
rcu_read_unlock();
QS
QS
QS
synchronize_rcu()
r3 = READ_ONCE(d);
WRITE_ONCE(e, 1);
QS
r4 = READ_ONCE(b);
r5 = READ_ONCE(e);
rcu_read_lock();
rcu_read_unlock();
QS
QS
QS
thread3()
thread4()