1

デフォルトのスタック サイズ 8MB を使用して pthread を作成するライブラリを使用しています。ライブラリが作成するスレッドのスタック サイズをプログラムで減らすことは可能ですか? setrlimit(RLIMIT_STACK...)関数内で使用してみmain()ましたが、効果がないようです。 ulimit -s仕事をしているようですが、プログラムが実行される前にスタックサイズを設定したくありません。

私にできることはありますか?ありがとう

更新 1:setrlimit(RLIMIT_STACK,...). 常駐メモリを確認したところ、仮想メモリよりもはるかに小さいことがわかりました。これは、私がスタック サイズを制限しようとするのをあきらめるのに十分な理由です。

4

2 に答える 2

1

あなたは運が悪いと思います。使用しているライブラリでスタック制限を設定する方法が提供されていない場合、スレッドの作成後にスタック制限を変更することはできません。setrlimit とシェルの制限は、メイン スレッドのスタックに影響します。

スレッドはプロセスのメモリ空間内に作成されるため、スレッドの作成時にスタックが割り当てられます。Unix では、スタックは必要に応じて RAM にマップされると思います。そのため、必要がなければ実際には 8 メガバイトの RAM を使用しないかもしれません (仮想メモリと常駐メモリ)。

于 2014-07-29T17:04:34.080 に答える