マルチスレッドのプログラミング

スタックの大きさの設定

pthread_attr_setstacksize(3T)

pthread_attr_setstacksize(3T) は、スレッドのスタックの大きさを設定します。

スタックサイズ属性は、システムが割り当てるスタックの大きさ (バイト数) を定義します。この大きさは、システムで定義された最小のスタックの大きさを下回ってはいけません。詳細は、「スタックについて」を参照してください。


プロトタイプ:

int	pthread_attr_setstacksize(pthread_attr_t *tattr, int size);

#include <pthread.h>

pthread_attr_t tattr;
int size;
int ret;

size = (PTHREAD_STACK_MIN + 0x4000);

/* 新しい大きさを設定する */
ret = pthread_attr_setstacksize(&tattr, size);

上の例では、新しいスレッドが使用するスタックのバイト数が size に納められています。size の値が 0 ならば、デフォルトの大きさが使われます。ほとんどの場合、0 を指定すれば最善の結果が得られます。

PTHREAD_STACK_MIN は、スレッドを起動する上で必要なスタック空間の大きさです。しかし、アプリケーションコードを実行するのに必要なスレッドの関数が必要とするスタック空間の大きさは含まれていません。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、対応する値を返します。


EINVAL

戻された値が PTHREAD_STACK_MIN より小さいか、システムの制限を超えているか、または tattr の値が無効です。