RCU (Read-Copy-Update) is a synchronization mechanism that allows for lock-free reads with concurrent updates. It achieves this through a combination of temporal and spatial synchronization. Temporal synchronization uses rcu_read_lock() and rcu_read_unlock() for readers, and synchronize_rcu() or call_rcu() for updaters. Spatial synchronization uses rcu_dereference() for readers to safely load pointers, and rcu_assign_pointer() for updaters to safely update pointers. RCU guarantees that readers will either see the old or new version of data, but not a partially updated version.