|
≫ |
|
|
|
HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
リエントラントな HP C RTL ルーチンが示すリエントラントのタイプを制御します。
形式
#include <reentrancy.h>
int decc$set_reentrancy (int type);
引数
type目的のリエントラントのタイプ。次のいずれかの値を使用します。
- C$C_MULTITHREAD --- DECthreads 製品と組み合わせて使用するように設計されています。DECthreads ロックを実行し, AST を絶対に無効にしません。この形式のリエントラントを使用するには,システムで DECthreads が使用可能でなければなりません。
- C$C_AST --- __TESTBITSSI (Integrity, Alpha) 組み込み関数を使用して,RTL コードのクリティカル・セクションの周囲で単純なロックを実行し,ロックされたコード領域で非同期システム・トラップ (AST) を無効にすることもあります。AST コードに
HP C RTL I/O ルーチンの呼び出しが含まれている場合や,ユーザ・アプリケーションで AST を無効にする場合は,このタイプのロックを使用する必要があります。
- C$C_TOLERANT --- __TESTBITSSI (Integrity, Alpha) 組み込み関数を使用して,RTL コードのクリティカル・セクションの周囲で単純なロックを実行しますが,AST は無効になりません。 AST が使用され,ただちに配布しなければならない場合は,このタイプのロックを使用する必要があります。 TOLERANT はデフォルトのリエントラント・タイプです。
- C$C_NONE --- HP C RTL で最適な性能を実現しますが,RTL コードのクリティカル・セクションの周囲で絶対にロックを行いません。 HP C RTL を呼び出す AST によって実行スレッドが割り込まれる可能性がない場合に,単一スレッド環境でのみ使用するようにしなければなりません。
リエントラント・タイプは上げることができますが,下げることはできません。リエントラント・タイプを低いものから高いものへ順に並べると,C$C_NONE, C$C_TOLERANT,C$C_AST,C$C_MULTITHREAD の順になります。たとえば,アプリケーションをマルチスレッドに設定した後,リエントラントを AST に設定する呼び出しは無視されます。
decc$set_reentrancyの呼び出しでリエントラント・タイプを下げようとすると, - 1 という値が返されます。
説明
リエントラント・ルーチンによって示されるリエントラントのタイプを変更するには,
decc$set_reentrancy関数を使用します。
decc$set_reentrancyは非 AST レベルで明示的に呼び出す必要があります。
DECthreads を使用するアプリケーションでは,DECthreads が自動的にリエントラントをマルチスレッドに設定します。
戻り値
タイプ
|
この呼び出しの前に使用されていたリエントラントのタイプ。
|
-1
|
リエントラント・タイプを下げようとしたことを示します。
|
|