2

スレッドとクラス インスタンスの両方にローカルな変数を実装する、プラットフォームにとらわれない優れた方法はありますか。つまり、T スレッドと I クラス インスタンスがある場合、その変数の TxI インスタンスがありますか? 私は D プログラミング言語バージョン 2 を使用していますが、言語にとらわれない優れた回答も役に立ちます。

以下にいくつかの制約を示します。

  1. 同期を要求してはなりません。これにより、スレッド ID をメンバー変数としての変数参照にマッピングするハッシュ テーブルを持つことが除外されます。
  2. ガベージ コレクションが必要な参照を保持してはなりません。これにより、クラス インスタンスによってインデックス付けされたスレッド ローカルの静的ハッシュ テーブルが除外されます。
  3. 初期化は、効率のために遅延する必要があります。スレッドが特定のインスタンスの変数にアクセスしない場合は、その変数を作成しないでください。
4

1 に答える 1

2

ガベージ コレクションが必要な参照を保持してはなりません。これにより、クラス インスタンスによってインデックス付けされたスレッド ローカルの静的ハッシュ テーブルが除外されます。

弱い参照キーを持つハッシュテーブルを使用します。ガベージ コレクションを妨げず、キー (クラス インスタンス) が収集されるときにハッシュ テーブルから情報を削除します。

于 2010-01-14T01:10:47.390 に答える