SharedStatic 構造体
Burst では、静的読み取り専用データへのアクセスについて基本的なサポートが提供されます。ただし、静的可変データを C# と HPC# で共有する場合は、SharedStatic<T>
構造体を使用する必要があります。
以下の例に、C# と HPC# の両方で変更できる int
静的フィールドへのアクセス方法を示します。
public abstract class MutableStaticTest
{
public static readonly SharedStatic<int> IntField = SharedStatic<int>.GetOrCreate<MutableStaticTest, IntFieldKey>();
// IntField を特定するためのキーの種類を定義します
private class IntFieldKey {}
}
この場合、C# と HPC# では以下のようにアクセスできます。
// 共有静的構造体に書き込みます
MutableStaticTest.IntField.Data = 5;
// 共有静的構造体から読み取ります
var value = 1 + MutableStaticTest.IntField.Data;
SharedStatic<T>
を使用する際には、以下の点に留意してください。
SharedStatic<T>
のT
では、データ型を定義します。- 静的フィールドを特定するには、コンテキストを提供します。それには、含める型 (上記の例では
MutableStaticTest
) のキーを作成し、フィールド (上記の例ではIntFieldKey
クラス) を特定して、それらのクラスをSharedStatic<int>.GetOrCreate<MutableStaticTest, IntFieldKey>()
のジェネリック引数として渡します。 - 共有静的フィールドに HPC# からアクセスする場合は、その前に必ず C# の静的コンストラクターから初期化してください。アクセス前に初期化しないと、未定義の初期化状態になる可能性があります。