スレッド・ローカル・クラス変数

スレッド・ローカル変数は、値を変数に代入するアクション・ブロックを最初に実行するときに、トレースされるスレッドごとにインスタンス化されます。 作成されたスレッド・ローカル変数は、 Vue スクリプトがアクティブであり、トレースされたスレッドが終了しない限り存在します。 スレッド・ローカル変数の値は、スレッド固有であり、同じプログラムのいずれの節の実行後も保持されます。 つまり、このクラスの変数は、 Vue スクリプト内のすべての場所で可視になります。 ただし、 Vue スクリプトを発行する各スレッドは、これらの変数の独自のコピーを取得します。このような各コピー内の変数は、それらをインスタンス化したスレッドによってのみ、スクリプト内の任意の場所にアクセスでき、変更できます。

スレッド・ローカル変数は、thread: 接頭部を使用して識別されます。 例えば、thread:count はスレッド・ローカル変数を示します。 また、スレッド・ローカル変数は __thread 宣言ステートメントを使用しても宣言できます。この場合、thread: 接頭部は省略できます。ただし、次の例外があります。

インスタンス化される前であっても、 Vue 節の述部セクションでスレッド・ローカル変数を使用できます。 インスタンス化されないスレッド・ローカル変数をもつ述部は必ず FALSE の値に評価されます。 thread: 接頭部は、述部セクションで使用する場合、必ずスレッド・ローカル変数として含める必要があります。

次のスクリプトは、__thread 宣言ステートメントの例です。

	__thread int i;      /* Explicit declaration */
	thread:j = 0;        /* Implicit declaration */
注: @@BEGIN および @@END プローブ内でスレッド・ローカルを宣言することはできますが、これらの特殊プローブ内でそれらを参照すると、未定義の動作が発生する可能性があります。 宣言ステートメント単独では、スレッド・ローカル変数はインスタンス化されません。