Как два или более потока совместно используют память в куче, которую они выделили?

Как следует из названия, как два или более потока совместно используют память в куче, которую они выделили? Я думал об этом, и я не могу понять, как они могут это сделать. Вот мое понимание процесса, предположительно я где-то ошибаюсь.

Любой поток может добавить или удалить заданное количество байтов в куче, выполнив системный вызов, который возвращает указатель на эти данные, предположительно, путем записи в регистр, который поток затем может скопировать в стек. Таким образом, два потока A и B могут выделить столько памяти, сколько захотят. Но я не понимаю, как поток A может знать, где находится память, выделенная потоком B. Я также не знаю, как любой поток может знать, где находится стек другого потока. Многопоточные программы -совместно используют кучу и, как мне кажется, могут обращаться к стеку друг друга, но я не могу понять, как это сделать.

Я попытался найти этот вопрос, но нашел только версии для конкретного языка, которые абстрагируются от деталей.

Изменить :Я пытаюсь не привязываться к языку или ОС, но я использую Linux и смотрю на него с точки зрения низкого уровня, я думаю, сборки.

14
задан Lemma Prism 10 August 2012 в 22:44
поделиться