7

新しいスレッドを生成する場合、メモリはどのように割り当てられますか?つまり、メモリヒープ、メモリスタック、およびスレッドはどのように関連していますか?これが基本的なもの(.net Frameworkの概念)であることは知っていますが、どういうわけか私はこの概念をあまり意識していません。

4

4 に答える 4

2

.Net スレッドの実装方法が原因で、この質問に答えるのは非常に困難です。マネージ スレッドと対応するネイティブ スレッドの間には、必ずしも 1 対 1 の実装があるとは限りません。CLR では、複数のネイティブ スレッドを自由に使用して、1 つのマネージド スレッドを実装できます。そのため、新しいマネージド スレッドを割り当てても、ネイティブ スレッドが生成されるとは限りません。既存のものを簡単に想定できます。

これがあなたにとって懸念事項である理由を教えていただけますか? おそらく、それがより良い答えにつながるでしょう。

于 2010-03-15T16:19:25.207 に答える
1

スタックはスレッドコンテキストに属します。ヒープはプロセスに属しているため、スレッド間で共有されます。

于 2010-03-15T16:17:48.857 に答える
1

.net よりもはるかに深い基本です。スレッドは OS ネイティブ オブジェクトです。マネージド スレッドと呼ばれるものは、ネイティブ スレッドの単なるラッパーです。

それであなたの質問に戻ります。メモリ ヒープは、単一の仮想メモリ空​​間にあるため、同じプロセスのスレッド間で共有されます。スタックは個別です。

于 2010-03-15T16:19:16.300 に答える
0

各スレッドには独自のスタックがありますが、すべてのスレッドがヒープを共有します。

于 2010-03-15T16:17:30.137 に答える