名称
pthread_default_rsestacksize_np() ― レジスタースタックサイズのデフォルト値の変更
構文
#include <pthread.h>
int pthread_default_rsestacksize_np(
size_t new_size,
size_t *old_size
);
パラメータ
| new_size | | 新しいレジスタースタックサイズのデフォルト値。 |
| old_size | | 旧レジスタースタックサイズのデフォルト値が返されるポインタ。 |
説明
pthread_default_rsestacksize_np() 関数を使用して、アプリケーションから rsestacksize 属性のデフォルト値を変更できます。 この関数はスレッドを作成する前に呼び出す必要があります。
スタックサイズの新しいデフォルト値は new_size パラメータで指定します。 old_size が NULL でなければ、 old_size に以前のデフォルト値が返されます。 new_size が 0 であれば、この関数で現在のデフォルト値を取得することができます。
HP-UX では、デフォルトのスタックサイズを持つスレッドはそのスレッドが終了した後キャッシュされ、
次にデフォルトのスタックサイズを持つスレッドが作成される時にそのキャッシュされたスレッド
(およびスタック) が再利用されます。 これにより、 pthread_create() の性能をかなり向上させることができます。
ただし、レジスタースタックのデフォルトサイズがアプリケーションに適さない場合はこの性能向上は適用されません。 pthread_default_rsestacksize_np() 関数を使用すると、スレッドライブラリはアプリケーションの要求に適合するように、スタックサイズのデフォルト値を変更します。
これによって、アプリケーションはキャッシュされたスレッドによる性能の向上を利用できます。
レジスタースタックのサイズを設定する API (pthread_default_rsestacksize_np(), pthread_attr_setrsestacksize()) が呼び出されると、スタック領域内のレジスタースタック領域のサイズが、実装依存の分割サイズではなく指定されたサイズとなり、
残りがメモリースタックとなります。
戻り値
正常終了すると、 pthread_default_rsestacksize_np() は 0 を返します。それ以外の場合はエラーを示すエラー番号が返されます
(errno 変数は設定されません)。
エラー
次のいずれかの場合には、 pthread_default_rsestacksize_np() 関数は対応するエラー番号を返します。
| EINVAL | | new_size で指定された値が、スレッドに必要なレジスタースタックのサイズより小さい場合。 |
| EPERM | | 呼び出したプロセスですでにスレッドが作成されている場合
(スレッドを作成する前に呼び出す必要があります)。 |
著者
pthread_default_rsestacksize_np() は HP
で開発されました。
参照
pthread_attr_getstacksize(3T), pthread_attr_setstacksize(3T), pthread_default_stacksize_np(3T)
標準準拠
pthread_default_rsestacksize_np(): なし