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

スタックサイズの設定

pthread_attr_setstacksize(3C) は、スレッドのスタックサイズを設定します。

pthread_attr_setstacksize の構文

int pthread_attr_setstacksize(pthread_attr_t *tattr, size_t size);
#include <pthread.h> 
#include <limits.h>
pthread_attr_t tattr; 
size_t size; 
int ret; 
size = (PTHREAD_STACK_MIN + 0x4000); 
/* setting a new size */ 
ret = pthread_attr_setstacksize(&tattr, size);

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

size には、新しいスレッドが使用するスタックのバイト数が含まれます。size の値が 0 ならば、デフォルトのサイズが使われます。通常は 0 を指定してください。

PTHREAD_STACK_MIN は、スレッドを起動する上で必要なスタック空間の量です。このスタック空間には、アプリケーションコードを実行するための、スレッドルーチンの要求量は考慮されていません。


例 3–3 スタックサイズの設定の例

#include <pthread.h>
#include <limits.h>

pthread_attr_t tattr;
pthread_t tid;
int ret;

size_t size = PTHREAD_STACK_MIN + 0x4000;

/* initialized with default attributes */
ret = pthread_attr_init(&tattr);

/* setting the size of the stack also */
ret = pthread_attr_setstacksize(&tattr, size);

/* only size specified in tattr*/
ret = pthread_create(&tid, &tattr, start_routine, arg); 

pthread_attr_setstacksize の戻り値

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


EINVAL

説明:

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