2011-10-18 11 views
0

私はスレッドで作業しています。フラグThreadStaticが必要かどうかはわかりません。とにかくどのスレッドでも、ブール型のシンプルな型にアクセスできます。スレッド固定フラグが必要ですか?

enoughtが何であるかを複数のスレッド上で作業:

Private _ImageToggle As Boolean 

または

<ThreadStatic()> Private _ImageToggle As Boolean 

それぞれがあるいくつかのインスタンスがある場合*マークGravellsの私の解釈は、*

に答えますマルチスレッドを使用すると、 "Threadstatic"フラグは共有された値を使用するソリューションになります。私が理解している限り、基本的なタイプについては理解できません。

+1

「必要です」という文脈については、一般的にもっと詳細が必要です。特にスレッディングでは、「どのように使用/消費/変更されましたか? **信じられないほど重要**です。 –

+0

Ok Marc。他の言葉で私は尋ねることができます、それはいつ必要ですか?私の質問では、スレッドと共有された値へのアクセスについてしか話しません。おそらくあなたはこの旗が重要な状況を知っているでしょうか? – Nasenbaer

+1

スレッドごとに1つの値*が必要な場合(全体的に1つの値ではなく)。例えば、各スレッドは異なる接続/クライアントを表すかもしれません。しかし、私が言及したように、明示的なコンテキストインスタンスを自分自身で持っていて、そのインスタンスを必要に応じて各スレッドに渡すだけです。スレッドを安全に再利用する方が簡単です。 –

答えて

2

static(VBではShared)ではないため、[ThreadStatic]は効果がありません。いいえ。これは必要ありません。

静的フィールドに適用すると、[ThreadStatic]は、各スレッドが異なる値(基本的にスレッドローカルストレージになります)を話していることを意味します。これは、ASP.NETとWCFを含む非同期ベースのコードはすべてとなるため、実際にはに注意する必要があるため、両刃です。一般的に私はこのフラグを避けるでしょう - インスタンスメンバを使用し、それを(スレッド間で)コンテキストとして渡す方が良いです。

関連する問題