Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-86657

Create a reader-optimized deferred reclamation primitive (hazard pointers)

    • Type: Icon: New Feature New Feature
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Internal Code
    • Labels:
    • Service Arch

      This API should be seen as a replacement for (roughly) atomic<shared_ptr<T>>, a mutex+shared_ptr<T> (which is how atomic<shared_ptr> is implemented) or places where we frequently take a mutex just to observe an object AND we release the mutex prior to acting on the observation.

      This should support:

      • Non-blocking reads: readers never block behind writers or other readers.
      • Reading stale values: readers may hold a reference to an earlier version of the object.
      • Writers to create a new version without blocking on readers to retire.
      • For efficiency, we should avoid having readers write to shared cache lines.

            Unassigned Unassigned
            amirsaman.memaripour@mongodb.com Amirsaman Memaripour
            0 Vote for this issue
            7 Start watching this issue