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

戻り値

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


EINVAL

base または tattr の値が正しくありません。

次の例は、独自のスタックアドレスを指定してスレッドを生成する方法を示します。


#include <pthread.h>

pthread_attr_t tattr;
pthread_t tid;
int ret;
void *stackbase;

stackbase = (void *) malloc(size);

/* デフォルト属性で初期化する */
ret = pthread_attr_init(&tattr);

/* 属性に基底アドレスを設定する */
ret = pthread_attr_setstackaddr(&tattr, stackbase);

/* 属性 tattr に大きさのみを指定する */
ret = pthread_create(&tid, &tattr, func, arg); 

次の例は、独自のスタックアドレスと独自のスタックの大きさを指定してスレッドを生成する方法を示しています。


#include <pthread.h>

pthread_attr_t tattr;
pthread_t tid;
int ret;
void *stackbase;

int size = PTHREAD_STACK_MIN + 0x4000;
stackbase = (void *) malloc(size);

/* デフォルト属性で初期化する */
ret = pthread_attr_init(&tattr);

/* スタックの大きさも設定する */
ret = pthread_attr_setstacksize(&tattr, size);

/* 属性に基底アドレスを設定する */
ret = pthread_attr_setstackaddr(&tattr, stackbase);

/* アドレスと大きさを指定する */
ret = pthread_create(&tid, &tattr, func, arg);