Безопасный Optimistic Lock Coupling: как обуздать гонки с помощью типов

Safe Optimistic Lock Coupling

С ростом числа ядер масштабируемость конкурентных структур данных упирается в физическую конкуренцию за блокировки. Optimistic Lock Coupling решает проблему, но требует постоянной валидации прочитанных значений, что чревато гонками. Автор предлагает обернуть непроверенные данные в специальный тип unvalidated<T>, доступный только через lock_guard, и использовать OptimisticPtr для безопасного обхода дерева. Компилятор теперь сам не даст забыть о валидации, сохраняя производительность и корректность.

Самое лучшее решение — заручиться поддержкой компилятора, закодировав необходимость валидации в системе типов.

Ещё за этот день

2026-10-05