anchor.diff:  == Chronicle Queue Enterprise Ring Buffer
   
   Chronicle Queue Enterprise Ring Buffer provides a high performance, multi-writer, multi-reader, ring buffer implementation
  -which can be used in your application code. https://jerryshea.github.io/2018/07/27/RingBuffer.html[This article]
  -gives some examples of how high-percentile latencies can be reduced.
  +which can be used in your application code.
   
   Additionally, it allows the ring buffer to be accessed
   through two different implementations of the `ChronicleQueue` interface.
  +https://jerryshea.github.io/2018/07/27/RingBuffer.html[This article] gives some examples of how high-percentile
  +latencies can be reduced.
  +
  +[NOTE]
  +====
  +Ring buffer functionality is still under development; you will still see `UnsupportedOperationException`s
  +thrown when some functionality is used - see link:#unsupported-operations[Unsupported operations].
  +====
   
   .Chronicle Ring Buffer
   image::images/Ring_buffer.svg[]
  
positive.code: 
  ```
      // process 1
      try (@NotNull ChronicleQueue queue = EnterpriseChronicleQueueBuilder
              .binary(path)
              .bufferCapacity(1 << 20)
              .readBufferMode(BufferMode.Asynchronous)
              .writeBufferMode(BufferMode.Asynchronous)
              // RB_BYTES_STORE_CREATOR_MAPPED_FILE is an example implementation of a bufferBytesStoreCreator
              // which creates a memory-mapped file located in a fast filesystem (/tmp) and has same name as
              // underlying queue, thus allowing its contents to be mapped and shared between processes.
              .bufferBytesStoreCreator(EnterpriseChronicleQueueBuilder.RB_BYTES_STORE_CREATOR_MAPPED_FILE)
              .build()) {
          ExcerptAppender appender = queue.acquireAppender();
          ...
      }
  
      // process 2
      try (@NotNull ChronicleQueue queue = EnterpriseChronicleQueueBuilder
              .binary(path) // same path as process 1
              .bufferCapacity(1 << 20)
              .readBufferMode(BufferMode.Asynchronous)
              .writeBufferMode(BufferMode.Asynchronous)
              .bufferBytesStoreCreator(EnterpriseChronicleQueueBuilder.RB_BYTES_STORE_CREATOR_MAPPED_FILE)
              .build()) {
          ExcerptTailer tailer = queue.createTailer();
          ...
  
negative.code:     ChronicleQueue rbq = new RingBufferChronicleQueue(ringBuffer, wireType, pauser);
  ```
  
  It can be used in the same way as any other Chronicle Queue implementation, but it is recommended to use
  software.chronicle.enterprise.queue.EnterpriseSingleChronicleQueue in preference.
  