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