Read-copy-update is an operating system kernel technology for improving performance on computers with more than one CPU.

The basic idea is as follows. Assume you have a data structure which is shared by multiple threadss of execution. When a thread wants to read the structure, it uses a pointer to the structure and continues on, without any locking or checking. This makes reading the data structure as efficient as reading a non-shared data structure.

When a thread wants to write to the structure, it

  • creates a new structure,
  • copies the data from the old structure into the new one, and saves a pointer to the old structure,
  • modifies the new, copied, structure
  • updates the global pointer to refer to the new structure, and then
  • sleeps until the operating system kernel determines that there are no readers left using the old structure.

When the thread which made the copy is woken up by the kernel, it can safely deallocate the old structure.

This technique is great for data which is read frequently but updated infrequently, but is not designed to be efficient in other cases.

External links