cpprussia C++ Russia 2020 Мск (29.06.2020 — 02.07.2020)

Три этюда о буферизации

img

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

Рассматриваются три задачи, подсказанные автору практикой, и достаточно общие, чтобы ценность представляли универсальные решения. Это буфер между источником и обработчиком сообщений, буфер для синхронизации данных между одним источником и многими потребителями, и буфер запросов, ожидающих исполнения.

Все три задачи допускают элементарное решение в контексте конкретного приложения, интересные и сложные аспекты начинаются именно с попытки дать универсальное решение, допускающее настройку на широкий круг возможных применений. Демонстрируется метод отделения того, что составляет инвариантную суть задачи, от того, что отражает специфику частных случаев. Попутно показано применение таких средств, как классы свойств, совершенная передача, семантика перемещения, атомарные операции.