Linuxでスレッドスタックサイズを変更する方法
Linuxでは、pthread_attr_setstacksize関数を使用してスレッドのスタックサイズを設定できます。
- まず、スレッド属性を格納するために、pthread_attr_t型の変数を宣言する。
- pthread_attr_t attr;
- pthread_attr_init関数でスレッド属性変数を初期化する。
- pthread_attr_init(&attr);
- pthread_attr_setstacksize 関数でスレッドのスタックサイズを設定する。
- stack_size = 8192; // スタックスペースを8KBに設定
pthread_attr_setstacksize(&attr, stack_size); - 上記のスレッド属性の変数を引数としてpthread_create関数に渡し、スレッドを作成します。
- pthread_t thread;
pthread_create(&thread, &attr, thread_func, NULL); - 最後に、pthread_attr_destroy 関数を使用して、スレッドの属性変数を破棄します。
- pthread_attr_destroy(&attr);
ご注意事項
- スタックサイズはシステムのページサイズ(getpagesize 関数で取得可能)の整数倍で設定します。
- スレッドに必要な操作の実行には十分なスタックサイズを設定する必要がありますが、システムリソースを無駄にするほど過大には設定しないでください。一般的には8KBから16KBのスタックサイズで十分です。
- 新規に作成されるスレッドにのみスレッドのスタックサイズの指定は有効であり、既作成されたスレッドには効果がありません。