0

Java から C# に移行し、wait() と sleep() について混乱しました。Java では、スリープはオブジェクトへのロックを解除せず、スリープが完了した後、スレッドは作業に戻ります。待機の場合は、オブジェクトからロックを解除し、他のスレッドがそのオブジェクトにしばらくアクセスできるようにします。

これはC#にも当てはまりますか、それとも違いがありますか?

4

1 に答える 1

5

はい、これは C# でも同様です。ほとんどの場合Thread.sleep、 Java のObject.waitObject.notify、は、.NETの 、、Object.notifyAllと密接に対応しています。Thread.SleepMonitor.WaitMonitor.PulseMonitor.PulseAll

公平性などの細部でいくつかの違いがあると思いますが、基本は同じように機能します。

ただし、これらの低レベルの抽象化を最新のコード (Java または C#) で使用することはめったにありません。Java では高レベルjava.util.concurrentの抽象化を .NET で使用し、Task可能であれば (および.NET 4)。特に、を使用Taskすると、C# 5 (および WinRT) での非同期処理の準備が整います。

于 2012-06-01T06:06:40.823 に答える