Как гласит название, как два или более потока обмениваются памятью в куче, которую они выделили? Я думал об этом, и я не могу понять, как они могут это сделать. Вот мое понимание процесса, по-видимому, я где-то ошибаюсь.
Любой поток может добавить или удалить определенное количество байтов в куче, сделав системный вызов, который возвращает указатель на эти данные, предположительно, путем записи в регистр, который поток может затем скопировать в стек. Таким образом, два потока A и B могут выделять столько памяти, сколько они хотят. Но я не вижу, как поток A может знать, где находится память, выделенная потоком B. Я также не знаю, как нить может знать, где находится другой стек потока. Многопоточные программы разделяют кучу и, я считаю, могут обращаться друг к другу, но я не могу понять, как это сделать.
Я попытался найти этот вопрос, но нашел только конкретные версии, которые абстрагируют детали.
Изменение: я стараюсь не быть языком или ОС, но я использую Linux, и я смотрю на него с низкой точки зрения, сборка, я думаю.