2011-01-02 11 views
0

WaitHandleと複数のスレッドで使用される他の同期オブジェクトはvolatileと宣言する必要がありますか?WaitHandle(s)volatileが宣言されるべきですか?

+2

@Xaqron :これは間違った方法ではありませんが、あなたがその質問をしているということは、間違ったことをしている可能性があることを意味します... –

+0

実際には、 。もしスレッドが 'WaitOne()'に行くと、別のスレッド 'Set()'はオブジェクトを返しますか? – Xaqron

+0

@Xaqron:揮発性イベントハンドラの例を見たことがありますか? –

答えて

2

volatileは、フィールドを再割り当てする場合にのみ有効です。
EventHandlerの場合、compiler will handle thread-safety;あなたはそれについて心配するべきではありません。

他の同期オブジェクトの場合は、最初に変数を再割り当てするべきではありません(おそらく)。 (突然変異と同じではありません)
readonlyを使用してください。volatileではありません。

+0

@Xaqronによって投稿された前回の最近の質問から、彼らはスレッドの問題を抱えていて、" suck it and see "メソッドで解決しようとしていることを意味しました。 –

+0

@Mitch:これはその質問(ロガー)に関するものではありません – Xaqron

+0

@Xaqron:いいえ。両方の質問は本質的にスレッディングとその不明瞭さに関するものです。 –

関連する問題