Поточная обработка "кучи" и стека

Как память выделяется в случае порождения нового потока, т.е. как неупорядоченное хранение памяти, стопка памяти и потоки связаны? Я знаю, что это фундаментально (понятие платформы .NET), но так или иначе я не очень знаю об этом понятии.

7
задан DJ. 15 March 2010 в 16:14
поделиться

4 ответа

На этот вопрос действительно трудно ответить из-за того, как реализованы потоки в .Net. Не обязательно существует реализация 1-1 между управляемыми и соответствующими родными потоками. CLR может свободно использовать несколько собственных потоков для реализации одного управляемого потока. Поэтому выделение нового управляемого потока не обязательно приводит к порождению собственного потока. Он может просто предполагать существующий.

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

2
ответ дан 7 December 2019 в 14:31
поделиться

Стек принадлежит контексту потока. Куча принадлежит процессу, следовательно, она распределяется между потоками.

1
ответ дан 7 December 2019 в 14:31
поделиться

Это фундаментально намного глубже, чем .net. Потоки - это собственные объекты ОС. То, что называется управляемым потоком, - это просто оболочка вокруг собственного потока.

Итак, вернемся к вашему вопросу. Куча памяти распределяется между потоками одного процесса, поскольку они расположены в едином пространстве виртуальной памяти. Стеки индивидуальные.

1
ответ дан 7 December 2019 в 14:31
поделиться

Каждый поток имеет свой собственный стек, но все потоки совместно используют кучу.

0
ответ дан 7 December 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: