THREADSTACK (非 CICS)
THREADSTACK は、上方成長と下方成長の両方のスタックについて、スレッドのスタック・ストレージの割り振りを制御します (マルチスレッド・アプリケーションの初期スレッドを除く)。
スレッド属性オブジェクトで明示的にスタック・サイズが指定されない場合、割り振り値は STACK オプションから継承されるか、THREADSTACK オプションで明示的に指定できます。
THREADSTACK には、以下のサブオプションがあります。
- ON または OFF:
OFF は、スレッド・スタック割り振りに STACK ランタイム・オプションの割り振りサブオプションが使用されることを指示します。その他のサブオプションはすべて無視されます。
ON は、各スレッドのスタック割り振りを制御します (マルチスレッド環境の初期スレッドを除く)。
- 初期サイズ (上方成長): 初期上方成長スタック・セグメントのサイズ。連続するストレージの最も近い 8 バイトの倍数に丸められます。
- 初期サイズ単位 (上方成長): 初期サイズを指定する単位 (K)。
- 増分サイズ (上方成長): 上方成長スタック・エリアの後に続く増分の最小サイズ。これは、最も近い 8 バイトの倍数に切り上げられます。
- 増分サイズ単位 (上方成長): 増分サイズを指定する単位 (K)。
- 初期サイズ (下方成長): 初期下方成長スタック・セグメントのサイズ。連続するストレージの最も近い 8 バイトの倍数に切り上げられます。
- 初期サイズ単位 (下方成長): 初期サイズを指定する単位 (K、M)。
- 増分サイズ (下方成長): 下方成長スタック・エリアの後に続く増分の最小サイズ。これは、最も近い 8 バイトの倍数に切り上げられます。
- 増分サイズ単位 (下方成長): 増分サイズを指定する単位 (K、M)。
- ANYWHERE または BELOW
ANYWHERE は、スタック・ストレージをストレージのどこにでも割り振ることができることを指定します。境界の上に使用可能なストレージがない場合、言語環境プログラムは境界の下のストレージを取得します。
BELOW は、スタック・ストレージを、24 ビット・アドレッシングでアクセス可能な、ストレージの 16 MB 境界の下に割り振ることを指定します。
- KEEP または FREE:
FREE は、スタック内の最後のストレージが解放されたときに、THREADSTACK 増分に割り振られたストレージを解放することを指定します。初期ライブラリー・スタック・セグメントは、エンクレーブが終了するまで解放されません。
KEEP は、スタック内の最後のストレージが解放されたときに、THREADSTACK 増分に割り振られたストレージを解放しないことを指定します。
注:
- THREADSTACK オプションは NONIPTSTACK および NONONIPTSTACK オプションを置き換えます。
- 初期サイズ (下方成長) と増分サイズ (下方成長) の値は、下方成長スタック・フレーム (および約 20 バイトのスタック・ヘッダー) に使用できるストレージの量です。 getmain されたストレージの実サイズは、保護ページに適合させるために 4K 大きくなります
(4K のページ位置合わせが保証されない場合は 8K 大きくなります)。
- 下方成長スタックは、XPLINK サポート環境で、XPLINK アプリケーションがエンクレーブでアクティブになっているときにのみ初期化されます。そうでない場合、下方成長スタックのサブオプションは無視されます。
- スレッドの終了時に、THREADSTACK セグメントに割り振られたすべてのストレージが解放されます。
- スレッドの初期スタック・セグメントは、KEEP/FREE の状態にかかわらず、スレッドが終了するまで解放されません。
- PL/I 考慮事項: マルチタスク環境またはマルチスレッド環境では、
THREADSTACK(OFF) を指定していない限り、サブタスクまたは非初期プロセス・スレッド (非 IPT) のスタック・サイズは
THREADSTACK オプションから取得されます。
THREADSTACK(OFF) は、STACK オプション内の値が使用されることを指定します。
- マルチスレッド環境では、スレッド属性オブジェクトでスタック・サイズを明示的に指定できます。このスタック・サイズは、THREADSTACK または STACK で指定された値の代わりに使用されます。