Threading куча и стек - PullRequest
       14

Threading куча и стек

7 голосов
/ 15 марта 2010

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

Ответы [ 4 ]

2 голосов
/ 15 марта 2010

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

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

1 голос
/ 15 марта 2010

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

1 голос
/ 15 марта 2010

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

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

0 голосов
/ 15 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...