Новое Распределяем каналы MAX по категориям и территориям. Читать новость

🔎 Гетерогенный поиск (lookup) в C++ позволяет искать объект в…

Загружаем изображение…
🔎 Гетерогенный поиск (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 — читайте в полном разборе на Хабре.
Просмотры: 36
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти