Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[SnowOne 2024] Александр Ланцов: Нестандартные расширения модели памяти на практике

jugnsk
April 30, 2024

[SnowOne 2024] Александр Ланцов: Нестандартные расширения модели памяти на практике

Продолжение доклада с Jpoint 2023 "Не happens-before единым: нестандартные семантики" (https://www.youtube.com/watch?v=UZbPOtEgcoY&feature=youtu.be). В первой части мы познакомились с существующими в Java семантиками и теми гарантиями, что они предоставляют.

Теперь время узнать, как данные семантики используются на практике: мы рассмотрим практический аспект применения данных семантик на реальных примерах, дойдем до нашумевшей в своё время библиотеки Disruptor, и даже узнаем, как написать свою очередь — ещё более производительную.

Доклад будет интересен всем, кто интересуется многопоточным программированием, моделями памяти и популярными lock-free библиотеками.

jugnsk

April 30, 2024
Tweet

More Decks by jugnsk

Other Decks in Programming

Transcript

  1. Тип очереди Throughput, ops/ms ArrayBlockingQueue_Wrapper 6,178 Volatile_Queue 17,002 AcqRel_Queue 37,472

    Improved_Volatile_Queue 48,678 Improved_AcqRel_Queue 165,217 Disruptor (Single Producer) 183,308
  2. Тип очереди Throughput, ops/ms ArrayBlockingQueue_Wrapper 6,178 Volatile_Queue 17,002 AcqRel_Queue 37,472

    Improved_Volatile_Queue 48,678 Improved_AcqRel_Queue 165,217 Disruptor (Single Producer) 183,308 Disrupted_AcqRel_Queue 190,000
  3. 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  4. 1 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  5. 2 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  6. 2 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  7. 2 1 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  8. 2 2 0 0 0 0 0 0 0 0

    0 0 0 0 0 0
  9. 2 2 2 2 2 2 2 2 2 2

    2 2 2 2 2 2
  10. 2 2 2 2 2 2 2 2 2 2

    2 2 2 2 2 2
  11. 3 2 2 2 2 2 2 2 2 2

    2 2 2 2 2 2
  12. 4 2 2 2 2 2 2 2 2 2

    2 2 2 2 2 2
  13. 4 4 4 4 4 2 2 2 2 2

    2 2 2 2 2 2
  14. 4 4 4 4 4 2 2 2 2 2

    2 2 2 2 2 2
  15. Тип очереди Throughput, ops/ms ArrayBlocking_QueueWrapper 6,178 Volatile_Queue 17,002 AcqRel_Queue 37,472

    Improved_Volatile_Queue 48,678 Improved_AcqRel_Queue 165,217 Disruptor (Single Producer) 183,308 Disrupted_AcqRel_Queue 190,000
  16. Тип очереди Throughput, ops/ms ArrayBlockingQueue_Wrapper 6,178 Volatile_Queue 17,002 AcqRel_Queue 37,472

    Improved_Volatile_Queue 48,678 Improved_AcqRel_Queue 165,217 Disruptor (Single Producer) 183,308 Disrupted_AcqRel_Queue 190,000 Seqlock_Queue 198,000