Ich arbeite an einer C# Codierung Übung mit diesem Code:Verwendung von Schloss keywork C#
class Program
{
static object sync = new object();
static void SafeRun()
{
lock (sync)
{
Thread.Sleep(1000);
}
}
static void Main(string[] args)
{
lock (sync)
{
SafeRun();
}
Console.Write("Safe");
}
}
}
Was gedruckt wird?
- Nichts, ein Deadlock tritt auf.
- Es kompiliert nicht.
- "Sicher" wird gedruckt.
Ich dachte, dass Deadlock auftreten wird, aber wenn ich den Code ausführen "Safe" wird gedruckt.
Also, können Sie mir erklären, warum 3 richtig ist und warum 1 nicht korrekt ist?
Vielen Dank!
In diesem Programm läuft nur ein Thread, der Hauptthread, auf die Synchronisierungsressource wird zweimal zugegriffen, aber auf den gleichen Thread, so dass keine Deadlock-Situation entsteht. –
Führen Sie das Programm aus und sehen Sie, was gedruckt wird: Das sind Ihre Hausaufgaben, oder? BTW wird es drucken "Safe" – CodingYoshi