17

私はスレッド化とロックについて読んでいました。値型をロックできない(そうすべきではない)のが一般的な方法です。

だから問題は、値型をロックするための推奨される方法は何ですか?1つのことを行うにはいくつかの方法があることは知っていますが、例は見ていません。MSDNフォーラムには良いスレッドがありましたが、今はそれを見つけることができないようです。

ありがとう

4

4 に答える 4

22

ロックには別のオブジェクトを使用してください。

int valueType;
object valueTypeLock = new object();

void Foo()
{
    lock (valueTypeLock)
    {
        valueType = 0;
    }
}
于 2009-01-07T15:54:16.910 に答える
0

私は常に別の変数を使用してロックしています。

object syncObj = new object();

void Foo()
{
  lock(syncObj)
  {
    // do some stuff
  }
}

値の型は不変で変更できないため、値の型をロックしても意味がありません。「this」は外界から見えるため、「this」をロックすることも問題です。

モニターの本来の使用方法に関する情報については、モニター (同期)を参照してください。

于 2009-01-07T16:21:43.297 に答える