Q
如何成功導致死鎖
9
A
回答
5
像這樣的東西應該工作:
主題1:
lock (A) {
lock (B) { }
}
線程2:
lock (B) {
lock (A) { }
}
+0
+1個很好的示例。我用手指燒了它。 – 2012-07-03 01:56:30
3
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");
}
}
}
}
學分:http://www.java-forums.org/java-lang/7346-how-create-simple-deadlock.html
相關問題
- 1. AutoResetEvent.WaitOne()導致死鎖
- 2. Thread.Join()導致死鎖
- 3. 會導致死鎖?
- 4. pthread_mutex_lock導致死鎖
- 5. 此代碼如何導致死鎖?
- 6. MemoryStream.CopyTo()導致線程死鎖
- 7. 導致死鎖的SQLBulkCopy
- 8. Ruby:open會導致死鎖
- 9. 運行PIP導致死鎖
- 10. 如何在concurrent.futures.ThreadPoolExecutor中使用不會導致死鎖的鎖?
- 11. 硬件發生「死鎖」還是軟件導致死鎖?
- 12. 線程關閉導致的死鎖
- 13. Java MySQL可能導致死鎖?
- 14. 可以使用sem_trywait()導致死鎖
- 15. JxBrowser導致線程死鎖120秒
- 16. WCF服務導致SQL死鎖錯誤
- 17. 這怎麼會導致死鎖?
- 18. INSERT操作是否會導致死鎖?
- 19. 導致死鎖的SQL更新
- 20. 異步等待導致死鎖
- 21. pthread_mutex_lock和pthread_cond_wait/signal導致死鎖
- 22. 導致死鎖錯誤的SQL查詢
- 23. 爲什麼這不會導致死鎖
- 24. 我的GetEnumerator會導致死鎖嗎?
- 25. 此代碼是否會導致死鎖?
- 26. Javascript Ajax可能導致死鎖嗎?
- 27. 調用Runtime.getRuntime()。EXEC(...)導致死鎖
- 28. 爲什麼睡眠(1000)導致死鎖?
- 29. assetResourcesForAsset:導致死鎖在同一時間
- 30. PSQL JDBC事務導致死鎖
參閱此http:// stackoverflow.com/questions/2543140/deadlock-網上樣本 – GustyWind 2012-01-18 11:18:19
請參閱此處的示例:http://stackoverflow.com/a/2411456/441574 – Brissles 2012-01-18 11:18:08