Module cow

Module cow 

Source
Expand description

A lightweight CoW implementation.

Structsยง

ICoW
A main structure which implements CoW approach based on atomics. The object stored inside can be read directly, but modifying the inner value is performed using CoW copy-on-write approach.
ICoWCopy
A write-guard which holds new value to which the new values are written. And previous value too. This type of guard is not exclusive, so multiple CoW operations may be performed in parallel which is not normally needed.
ICoWLock
A write-guard which holds new value to which the new values are written. And previous value too. This type of guard is exclusive, so multiple CoW operations CANNOT be performed in parallel which is good for instance update without racing. The readers are also waiting until the changes are commited.
ICoWRead
A read only guard. Implements Deref only. The guarded value is valid all the time, even if the inner value was updated. The updated value will not be visible in the current instance until re-read performed.