1. ホーム
  2. c

[解決済み] スレッドには個別のヒープがあるのか?

2022-08-31 12:02:15

質問

私の知る限り、オペレーティングシステムによってスレッドが作成されるとき、各スレッドは個別のスタックを取得します。私は、各スレッドがそれ自身のために個別のヒープを持っているかどうか疑問に思います。

どのように解決するのですか?

いいえ。すべてのスレッドが共通のヒープを共有します。

それぞれの スレッドはプライベートスタック を持ち、そこから素早くアイテムを追加したり削除したりすることができます。 これにより、スタックベースのメモリは高速になりますが、無限再帰で発生するようにスタックメモリを使いすぎると、スタックオーバーフローが発生します。

すべてのスレッドが同じヒープを共有するので、アロケータ/デアロケータへのアクセスは同期されなければなりません。 を避けるための様々な方法とライブラリがあります。 アロケータ競合 .

いくつかの言語では、メモリのプライベートプール、または個々のヒープを作成することができ、それらを単一のスレッドに割り当てることができます。