Новости от рабочей группы 21, Антон Полухин
HTML-код
- Опубликовано: 5 окт 2024
- Обсудим новости со встречи Международного комитета по стандартизации языка С++ и интересные новинки С++26. Руководитель РГ 21 С++ Антон Полухин ответит на вопросы и расскажет о планах на С++26 и С++29
Лучший стенап плюсовик
Грустно, когда, по всей видимости, некоторые конторы-члены комитета тянут в стандарт свои сугубо специальные хотелки вроде rcu и hazard ptr. Ну вот зачем оно в стандарте? Какие-то костыли. Надеюсь не примут.
Глобальные объекты (rcu и hazard)
Как-же они смогут быть быстрее локальных подобных защитников?
Получится что-то типа атомарного шареда? А атомарный шаред сейчас (в 20 стандарте, вроде проблему поправли) прячется за глобальным статическим мьютексом, что вообще ни разу не быстро...
времени прошло уже, но может быть пригодится: послушал пару выступлений, выглядит так, что данные за хазард поинтером хранятся в неизменяемом режиме. Для 'изменения' данных вы помещаете в текущее состояние хазард поинтера новые данные, которые потом будут использоваться при дальнейших чтениях. Для этого и нужен полу-сборщик мусора: чтобы отслеживать старые куски данных и удалять их, если они больше никем не используются. Таким образом у нас есть гарантия того, что мы читаем неизменяемый кусок данных, а значит и никакой мьютекс\атомик нам уже и не нужен
@@Raspredval1337 А при чём тут глобальная и локальная реализация хазардов?
Код всё ещё вне политики???
не понял чем RCU и hazard pointer лучше по сравнению со стандартными средствами, которые работают в режиме one writer/many readers
Имеющиеся стандартные механизмы (например shared_mutex) являются блокирующими.
RCU и hazard_pointer можно использовать как lock-free механизмы. То есть они, например, очень хорошо подходят для асинхронных фреймворков с корутинами. При этом обладают на порядок лучшей производительностью/масштабируемостью, чем имеющиеся стандартные подходы
Я знаю, что на совсем в тему, но с модулями ведь реализация фаст пимпла может быть сильно упрощена, так?
Вообще это удивительно, как такая замечательная концепция как модули, имеет такую ужасную реализацию во всех компиляторах, система сборки и ленгвич серверах с аналайзерами
Сотен, если не тысяч строк кодовой базы, можно было бы избежать, но c++ это слишком неповоротливая среда, которая могла бы исправиться, но для этого нужно повернуться, но среда то неповоротливая. Вот так и живём
mdspan просто какой-то ночной кошмар... а я ещё на DX12 и CUDA жаловался...