Що таке кільцевої буфер?

Високопродуктивні операції CAS

Disruptor – це високопродуктивна бібліотека для передачі повідомлень між потоками, розроблена і відкрита кілька років тому компанією LMAX Exchange. Вони створили це програмне забезпечення для обробки величезного трафіку (більше 6 мільйонів TPS) у своїй роздрібної фінансової торговій платформі. У 2010 році вони здивували всіх тим, наскільки швидкою може бути їх система, виконавши всю бізнес-логіку в одному потоці. Хоча один потік був важливою концепцією у їх вирішенні, Disruptor працює в многопоточной середовищі і заснований на кільцевому буфері – потік, в якому застарілі дані більше не потрібні, тому що надходять більш свіжі і більш актуальні.

У цьому випадку спрацює або повернення помилкового логічного значення, або блокування. Якщо жодне з цих рішень не задовольняє користувачів, можна реалізувати буфер з змінюваному розміром, але тільки тоді, коли він заповнюється, а не тільки тоді, коли виробник досягає кінця масиву. Зміна розміру зажадає переміщення всіх елементів у знову виділений більший масив, якщо він використовується в якості базової структури даних, що, звичайно, є дорогою операцією. Є багато інших речей, які роблять Disruptor швидким, наприклад споживання повідомлень в пакетному режимі.

Кільцевий буфер “qtserialport” (послідовний порт) успадковується від QIODevice, може бути використаний для отримання різних послідовної інформації і включає в себе всі доступні послідовних пристроїв. Послідовний порт завжди відкритий в монопольному доступі, це означає, що інші процеси або потоки не можуть отримати доступ до відкритого послідовного порту.

Кільцеві буфери дуже корисні в програмуванні на “Сі”, наприклад, можна оцінити потік байтів, що надходять через UART.