GNU/Linux >> Linux の 問題 >  >> Linux

スレッドには個別のヒープがありますか?

デフォルトでは、C にはヒープが 1 つしかありません。

とはいえ、スレッド対応の一部のアロケーターはヒープを分割して、各スレッドが独自の領域を割り当てられるようにします。これにより、ヒープ スケールが改善されるはずです。

そのようなヒープの一例は Hoard です。


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

各スレッドにはプライベート スタックがあり、アイテムをすばやく追加および削除できます。これにより、スタック ベースのメモリは高速になりますが、無限再帰で発生するようにスタック メモリを使いすぎると、スタック オーバーフローが発生します。

すべてのスレッドが同じヒープを共有するため、アロケーター/デアロケーターへのアクセスを同期する必要があります。アロケータの競合を回避するためのさまざまな方法とライブラリがあります。

一部の言語では、メモリのプライベート プールまたは個別のヒープを作成して、単一のスレッドに割り当てることができます。


Linux
  1. Linux スレッドの紹介 – パート I

  2. Linux でスレッドを作成する方法 (C サンプル プログラムを使用)

  3. errno はスレッドセーフですか?

  1. 切り離された POSIX スレッドと結合可能な POSIX スレッド

  2. プリエンプティブ スレッドと非プリエンプティブ スレッド

  3. 別のスレッドからスレッドローカルにアクセスする

  1. Linuxで元に戻すことはできますか?

  2. スレッドとファイル記述子

  3. top によって報告された Python スレッドの ID