LINUX.ORG.RU

А существует ли в линуксе thread-local куча?

 , , ,


0

2

Если да то подскажите где искать.

PS: Я никогда раньше не пользовал TLS в юзерспейсе поэтому просьба сильно не пинать :-)

★★★★★

Последнее исправление: cvv (всего исправлений: 1)

Куча на то и куча, что она одна на всех.

anonymous
()

Посмотри tcmalloc, jemalloc, но в современной версии линукса и обычный malloc достаточно хорош, хотя так было не всегда.

А так, можешь создать свою кучу

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от dave

Посмотри tcmalloc, jemalloc, но в современной версии линукса и обычный malloc достаточно хорош, хотя так было не всегда.

Это не то - они распределяют общую память.

А так, можешь создать свою кучу

не хотелось бы ...

cvv ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

при управлении памятью по возможности используется локальный пул

Это не то. Мне нужно чтобы malloc() вернувший тот же указатель в двух разных тредах адресовал разную физическую память.

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Ты придумываешь известным терминам новые значения. То, что ты хочешь, называется thread local storage и является ограниченным ресурсом. Но то, что ты хочешь, тривиально делается на TLS с одним косвенным обращением.

tailgunner ★★★★★
()
Ответ на: комментарий от cvv

Это не то - они распределяют общую память.

Не совсем так. Они стараются использовать по возможности внутри реализации разные пулы для разных потоков, но поскольку потоков может быть дофигища, а пулов мало, то бывают и пересечения. Это как я понимаю, но особо не углублялся в эту тему.

А так, многое зависит от твоей задачи

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от cvv

это странное желание. тебе правильно про TLS сказали. юзай TLS и смещения, например, если уж очень хочется «одинаковости». хотя непонятно, зачем она нужна.

Iron_Bug ★★★★★
()
Ответ на: комментарий от cvv

А в чем гарантия то? Тогда нужно просить не возможность thread-local кучи, а запрета shared кучи!

Deleted
()
Ответ на: комментарий от cvv

если ты сам сознательно не натравишь их на один мьютекс, они и не встретятся. но, собственно, общая куча как раз и нужна для обмена между потоками. если они у тебя вообще независимы - можно нафоркать процессов и у каждого будет своя копия кучи при обращении на запись.

Iron_Bug ★★★★★
()
Ответ на: комментарий от tailgunner

То, что ты хочешь, называется thread local storage и является ограниченным ресурсом.

Есть какието обьективные проблемы делающие проблемным TLS размером несколько GB или несколько десятков GB?

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Есть какието обьективные проблемы делающие проблемным TLS размером несколько GB или несколько десятков GB?

Не знаю. Наверное, можно сделать TLS расширяемым, только это никому не нужно (тебе тоже).

tailgunner ★★★★★
()
Ответ на: комментарий от cvv

TLS заточен не под динамическое выделение, а чтобы находить адреса статических слотов в условиях динамического набора модулей и тредов.

если отдельно страницы мапать аля TLS, без обёртки смысла в этом примерно как в static thread_local char buf[100000000] , с обёрткой - получаем аллокатор, а аллокаторы и простую память изолируют, если в каждом треде свой аллокатор.

anonymous
()
Ответ на: комментарий от cvv

TLS размером несколько GB или несколько десятков GB

Зачем тебе вообще треды? Форкай процессы, как уже предлагали и там хоть TB запрашивай.

no-such-file ★★★★★
()

Есть, называется «обычные процессы».

anonymous
()
Ответ на: комментарий от no-such-file

Эххх ... Я тут типа поддерживаю софт изначально писанный для какойто солярки на спарках. Тредов - немерянно (тысячи). Выпилить будет нетривиально.

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Ок. Зачем тебе разделяемая память, тем более, ты не хочешь что бы она была разделяемой? Пусть каждый тред создаст себе свой пул памяти и использует его.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.