KasperskyOS

@kasperskyos
Фото 🔎 Гетерогенный поиск (lookup) в C++ позволяет искать объект в контейнере по другому типу без промежуточного преобразования и создания временного объекта Для std::set и std::map такая возможность появилась еще в C++14, а для std::unordered_set и std::unordered_map — только в C++20. В новой статье на Хабре Евгений Ерохин, старший разработчик «Лаборатории Касперского», показывает, как эту возможность можно применить в разработке на примере драйвера VirtIO Vsock для KasperskyOS. Изначально драйвер начали писать на C, но по мере усложнения работы с соединениями, списками и счетчиками ссылок перешли на C++. В микроядерной архитектуре KasperskyOS драйвер работает как отдельный процесс, поэтому при его разработке можно использовать возможности стандартной библиотеки C++, включая контейнеры и shared_ptr. В статье автор показывает, почему двусвязные списки оказались неудобны для этой задачи, как unordered_set и shared_ptr упростили работу с соединениями и как is_transparent позволил искать нужное соединение прямо по заголовку входящего пакета. Заодно разбирается, почему такой подход помогает сократить количество лишних преобразований и сделать код компактнее и понятнее. ➡️ Как гетерогенный поиск C++ повлиял на устройство драйвера для KasperskyOS — читайте в полном разборе на Хабре.
Если у вас установлено приложение,
вы можете сразу перейти в канал