-1

重複の可能性:
new object() 以外のものをロックする理由はありますか?

実際に違いがある場合、ロックするのに最適なプライベート静的オブジェクトは何だろうと思っています。

現時点では、私のコードのほとんどは次のもので構成されています。

private static object m_lockObject = new object();

lock(m_lockObject)
{
    ..critical thread code here
}

オブジェクトだけをロックする代わりに、別の型を使用する必要がありますか? カスタム クラス インスタンス、int、または文字列などのように...? それとも関係ありませんか?

ありがとう

4

1 に答える 1

1

Lockステートメントは、基になるMonitorオブジェクトの構文糖衣にすぎません。ロックの目的で、参照を使用します。それがどの参照であっても問題ありません - モニターの観点からです! ただし、ロックすると、文字列がインターンされstringているなどの理由で、予期しない結果が生じる場合があります。また、値の型をロックすると、ボクシングのために例外が発生します。

TL;DR バージョン - あなたはそれを非常に正しく行っています (そのstatic部分が本当にあなたの望む動作である場合)

于 2012-11-29T17:44:21.650 に答える