2017-10-06 6 views
2

Lock引数のオブジェクトの目的は何ですか?ここに例があります:Lock文の引数のオブジェクトの目的

public class TestThreading 
{ 
    private System.Object lockThis = new System.Object(); 

    public void Process() 
    { 

     lock (lockThis) 
     { 
      // Access thread-sensitive resources. 
     } 
    } 

} 

...これはロックボディに何かを渡しますか?引数にobjectがないLock文を使用できないのはなぜですか?

+1

ロックを所有するスレッドとその頻度を記録する変数が必要です。ロック状態。 System.Objectは、これらのすべてを実行するために、一見不十分な種類のオブジェクトですが、可能です。多くのプログラマは、.NET Frameworkがこの種の変数のために専用の型を持たなければならないと主張しています。あなたは1つを作ることができます:パブリッククラスLockState:オブジェクト{}。 –

+0

ありがとうございます。代わりにlock文に "Thread.CurrentThread.ManagedThreadId"を渡すと意味がありますか? – cembo

+1

それは悲惨です。あなたはこれを学ぶほうがいいですか、スレッディングはあなたを生きて食べるでしょう。 –

答えて

3

lockステートメントに渡されるオブジェクトは、ロックの識別子と考えることができます。任意のオブジェクトに対して、1つのスレッドだけが、そのオブジェクトに対する排他ロックをいつでも得ることができます。オブジェクトをlockステートメントに渡すことができるようにすることで、重要なコードの異なる領域に異なるオブジェクトを使用することができます。

lockステートメントドキュメントよりも、オブジェクトの使用方法についてより詳しく説明しています。

関連する問題