Ты придумываешь известным терминам новые значения. То, что ты хочешь, называется thread local storage и является ограниченным ресурсом. Но то, что ты хочешь, тривиально делается на TLS с одним косвенным обращением.
Не совсем так. Они стараются использовать по возможности внутри реализации разные пулы для разных потоков, но поскольку потоков может быть дофигища, а пулов мало, то бывают и пересечения. Это как я понимаю, но особо не углублялся в эту тему.
это странное желание. тебе правильно про TLS сказали. юзай TLS и смещения, например, если уж очень хочется «одинаковости». хотя непонятно, зачем она нужна.
если ты сам сознательно не натравишь их на один мьютекс, они и не встретятся. но, собственно, общая куча как раз и нужна для обмена между потоками. если они у тебя вообще независимы - можно нафоркать процессов и у каждого будет своя копия кучи при обращении на запись.
TLS заточен не под динамическое выделение, а чтобы находить адреса статических слотов в условиях динамического набора модулей и тредов.
если отдельно страницы мапать аля TLS, без обёртки смысла в этом примерно как в static thread_local char buf[100000000] , с обёрткой - получаем аллокатор, а аллокаторы и простую память изолируют, если в каждом треде свой аллокатор.
Там вроде можно руками сконфигурить арену, а потом явно аллоцировать через нее используя mallocx с MALLOCX_ARENA. Правда, скорее всего, измеримого профита не увидишь.
Ок. Зачем тебе разделяемая память, тем более, ты не хочешь что бы она была разделяемой? Пусть каждый тред создаст себе свой пул памяти и использует его.
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 1)