静的読み取り専用オブジェクトを使用したロックをよく見かけますが、以下のコードでこのステートメントの意味は何ですか?私はロックがオブジェクトに適用されていることを知っています。これはロックを機能させるための単なるオブジェクトですか?それは単なるハックですか?ここではオブジェクトは必要ありませんが、ロックを機能させるためにオブジェクトを作成するだけですか?
また、単に object obj1= new object() と言う代わりに、readonly と static を使用します。パフォーマンスが向上したためだと思いますが、readonly と static がパフォーマンスの向上にどのように役立つのでしょうか?
static readonly object locker = new object();
コードは次のとおりです。
class ThreadSafe
{
static bool done;
static readonly object locker = new object();
static void Main()
{
new Thread (Go).Start();
Go();
}
static void Go()
{
lock (locker)
{
if (!done) { Console.WriteLine ("Done"); done = true; }
}
}
}