Tôi đang cố gắng gây ra bế tắc trong C# cho mục đích mô phỏng. Chỉ là một chương trình nhanh.Làm thế nào để thành công gây ra bế tắc
Có ai vui lòng đề xuất một số ý tưởng để làm như vậy không?
Tôi đang cố gắng gây ra bế tắc trong C# cho mục đích mô phỏng. Chỉ là một chương trình nhanh.Làm thế nào để thành công gây ra bế tắc
Có ai vui lòng đề xuất một số ý tưởng để làm như vậy không?
Something như thế này nên làm việc:
lock (A) {
lock (B) { }
}
lock (B) {
lock (A) { }
}
+1 ví dụ tuyệt vời. Tôi đã đốt ngón tay của tôi với nó. –
class Program
{
static object _locker1 = new object();
static object _locker2 = new object();
static void Main(string[] args)
{
Thread first = new Thread(FirstThread);
first.Start();
Thread second = new Thread(SecondThread);
second.Start();
}
static void FirstThread(object obj)
{
// Lock resource 1
lock(_locker1)
{
Console.WriteLine("Thread 1: locked resource 1");
try
{
Thread.Sleep(50);
}
catch (ThreadInterruptedException e) {}
lock(_locker2)
{
Console.WriteLine("Thread 1: locked resource 2");
}
}
}
static void SecondThread(object obj)
{
// Lock resource 1
lock (_locker2)
{
Console.WriteLine("Thread 2: locked resource 2");
try
{
Thread.Sleep(50);
}
catch (ThreadInterruptedException e) { }
lock (_locker1)
{
Console.WriteLine("Thread 2: locked resource 1");
}
}
}
}
tín dụng cho: http://www.java-forums.org/java-lang/7346-how-create-simple-deadlock.html
thấy http: // stackoverflow.com/questions/2543140/deadlock- mẫu-trong-net – GustyWind
Xem ví dụ tại đây: http://stackoverflow.com/a/2411456/441574 – Brissles