напр. тамошний интрузивный список?
В доке своей в when to use они пишут:
* additional memory management should be avoided.
...
* exception safety, especially the no-throw guarantee, is needed.
* it's important to achieve a well-known worst-time system response.
* localization of data (e.g. for cache hit optimization) leads to measurable effects.
Но это звучит как красноглазие, а не юзкейсы. Это все варианты «у нас есть алгоритм, который работает только со списками [при этом мы никак не можем заменить списки на что-либо другое], и нам жесть-жесть как надо его оптимизировать, и мы решили, что отсутствие кэш-локальности (или аллокации [которые мы также никакими другими способами уменьшить не может]) — вот где наши беды»
Есть ли у интрузивных контейнеров как в Boost.Intrusive популярные юзкейсы? Где мы вот ими можем заменить что-то и у нас мгновенно производительность +100500%?
И правильно ли я понимаю, что в связи с появлением в стандартной библиотеке полиморфных аллокаторов интрузивные контейнеры как в Boost.Intrusive больше не нужны?
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Не говорю про lockfree. Ведаю, что интрузивные lockfree контейнеры популярны. Лишь про интрузивные контейнеры как в Boost.Intrusive. То есть, не-lockfree интрузивные контейнеры. Мне хочется для себя подтвердить или опровергнуть утверждение „не-lockfree интрузивные контейнеры нафиг не нужны“. Интересно стороннее мнение, может, кто может что сказать
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Где-то в яндексе делали глобальный список логгеров или чего-то похожего на интрузивных контейнерах - без аллокаций.
в файберах (стекфул корутинах) в тредпулах (для интрузивных задач в буст асио например) и тд когда тебе нужно переподвешивать элементы и ты хочешь то что это нода хранить прямо в типе собственно в отличие от обычных списков интрузивные списки это действительно полезная штука
в-общем вопрос некорректный скорее наоборот задавай вопрос зачем нужны обычные списки
Нет. Им просто нужно было регистрировать статические переменные в каком-то общем пуле, но без аллокаций
просто ты это не пишешь, это на уровне языка
Но могли бы так же успешно взять стандартный pmr::list (по крайней мере, если бы жили во время C++17+), получается, в этом случае
Интересно. Спасибо
ну не совсем, если ты пишешь какой-нибудь примитив синхронизации, то ты, возможно, будешь делать интрузивный список авейтеров
А где бы он аллоцировал? Заранее неизвестно, сколько будет объектов, они раскиданы по TU
Хорошо я до сих пор в 11 живу)))
А какой смысл жить в 11, а не в 14? Реально есть что в 14 стало хуже?
Не, я просто маленький и до 14 не дотянул, в мой крошечный мозг не влезает даже for(a:b){cout<<a}
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Обсуждают сегодня