Documentation / RCU / Design / Requirements / ReadersPartitionGP1.svg

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()