名 前
pthread_attr_setstacksize, pthread_attr_getstacksize − ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の ス タ ッ ク サ イ ズ 属 性 の 設 定 /取 得 を 行 う
書 式
#include <pthread.h>
int
pthread_attr_setstacksize(pthread_attr_t
*attr, size_t stacksize);
int pthread_attr_getstacksize(const pthread_attr_t
*attr, size_t
*stacksize);
−pthread で コ ン パ イ ル し て リ ン ク す る 。
説 明
pthread_attr_setstacksize() 関 数 は 、 attr が 参 照 す る ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の ス タ ッ ク ア ド レ ス 属 性 を stacksize で 指 定 さ れ た 値 に 設 定 す る 。 ス タ ッ ク サ イ ズ 属 性 に よ り 、 ス レ ッ ド 属 性 オ ブ ジ ェ ク ト attr を 使 っ て 作 成 さ れ た ス レ ッ ド に 割 り 当 て ら れ る 最 小 サ イ ズ (バ イ ト 単 位 ) が 決 定 さ れ る 。
pthread_attr_getstacksize() は 、 ス レ ッ ド 属 性 オ ブ ジ ェ ク ト attr の ス タ ッ ク ア ド レ ス 属 性 を stacksize が 指 す バ ッ フ ァ ー に 入 れ て 返 す 。
返 り 値
成 功 す る と 、 こ れ ら の 関 数 は 0 を 返 す 。 エ ラ ー の 場 合 、 0 以 外 の エ ラ ー 番 号 を 返 す 。
エ ラ ー
pthread_attr_setstacksize() は 以 下 の エ ラ ー で 失 敗 す る 場 合 が あ る 。
EINVAL ス タ ッ ク サ イ ズ が |
PTHREAD_STACK_MIN (16384) バ イ ト 未 満 で あ る 。 |
い く つ か の シ ス テ ム で は 、 pthread_attr_setstacksize() は stacksize が シ ス テ ム の ペ ー ジ サ イ ズ の 倍 数 で な い 場 合 に も エ ラ ー EINVAL で 失 敗 す る 。
バ ー ジ ョ ン
こ れ ら の 関 数 は glibc バ ー ジ ョ ン 2.1 以 降 で 提 供 さ れ て い る 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 pthread_attr_setstacksize() と pthread_attr_getstacksize() は ス レ ッ ド セ ー フ で あ る 。
準 拠
POSIX.1−2001.
注 意
新 し い ス レ ッ ド の デ フ ォ ル ト の ス タ ッ ク サ イ ズ の 詳 細 に つ い て は pthread_create(3) を 参 照 。 ス レ ッ ド の ス タ ッ ク サ イ ズ は 、 ス レ ッ ド 作 成 時 点 で は 固 定 で あ る 。 メ イ ン ス レ ッ ド だ け が ス タ ッ ク を 動 的 に 伸 ば す こ と が で き る 。
pthread_attr_setstack(3) 関 数 を 使 う と 、 ア プ リ ケ ー シ ョ ン は 、 ス レ ッ ド が 使 用 す る ス タ ッ ク と し て 、 呼 び 出 し 側 で 割 り 当 て た ス タ ッ ク の サ イ ズ と 場 所 を 指 定 で き る 。
バ グ
glibc 2.8 の 時 点 で は 、 指 定 さ れ た stacksize が STACK_ALIGN (ほ と ん ど の ア ー キ テ ク チ ャ ー で は 16 バ イ ト ) の 倍 数 で な い 場 合 、 stacksize は 小 さ く な る 方 向 に に 丸 め ら れ る 。 こ れ は POSIX.1−2001 に 違 反 し て い る 。 POSIX.1−2001 で は 、 割 り 当 て ら た ス タ ッ ク の 大 き さ は 少 な く と も stacksize バ イ ト に な る と 書 か れ て い る 。
例
pthread_create(3) を 参 照 。
関 連 項 目
getrlimit(2), pthread_attr_init(3), pthread_attr_setguardsize(3), pthread_attr_setstack(3), pthread_create(3), pthreads(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。