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

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

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

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

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

Ответы на вопрос(4)

Ваш ответ на вопрос