C# Thread

比較好的博客文章:html

https://www.cnblogs.com/wyt007/p/9486752.html安全

 

知識點:異步

  1. 建立線程
  2. 暫停線程
  3. 線程等待
  4. 終止線程
  5. 監測線程狀態
  6. 線程優先級
  7. 前臺線程和後臺線程
  8. 向線程傳遞參數
  9. 使用C#中的lock關鍵字
  10. 使用Monitor類鎖定資源
  11. 處理異常
  12. 線程同步-執行基本的原子操做(Interlocked)
  13. 線程同步-使用Mutex類
  14. 線程同步-使用SemaphoreSlim類
  15. 線程同步-使用AutoResetEvent類
  16. 線程同步-使用ManualResetEventSlim類
  17. 線程同步-使用CountdownEvent類
  18. 線程同步-使用Barrier類
  19. 線程同步-使用ReaderWriterLockSlim類
  20. 線程同步-使用SpinWait類
  21. 使用線程池-在線程池中調用委託
  22. 使用線程池-向線程池中放入異步操做
  23. 使用線程池-線程池與並行度
  24. 使用線程池-實現一個取消選項
  25. 使用線程池-在線程池中使用等待事件處理器及超時
  26. 使用線程池-使用計時器
  27. 使用線程池-使用BackgroundWorker組件
  28. 使用任務並行庫-建立任務
  29. 使用任務並行庫-使用任務執行基本的操做
  30. 使用任務並行庫-組合任務
  31. 使用任務並行庫-將APM模式轉換成任務
  32. 使用任務並行庫-將EAP模式轉換成任務
  33. 使用任務並行庫-實現取消選項
  34. 使用任務並行庫-處理任務中的異常+
  35. 使用任務並行庫-並行運行任務
  36. 使用任務並行庫-使用TaskScheduler配置任務的執行
  37. 處理問題:線程死鎖狀態下處理

 

 

在解釋死鎖如何發生以及如何阻止死鎖的過程當中,你彷佛遇到了問題。this

當兩個( 最小二) 線程試圖獲取已經被另外一個鎖鎖定的資源的鎖時,就會發生死鎖。 線程 1鎖定資源 1嘗試獲取對資源 2的鎖定。 同時,線程 2對資源 2有一個鎖,它嘗試獲取對資源 1的鎖。 兩個線程永遠不會放棄鎖,所以發生死鎖。spa

避免死鎖的最簡單方法是使用超時值。 Monitor類( system.threading.monitor ) 能夠在獲取鎖期間設置超時。線程

例子code

1
2
3
4
5
6
7
8
9
10
11
if (Monitor.TryEnter( this , 500))
{
//critical section
}
catch (Exception ex)
{
}
finally
{
  Monitor.Exit();
}

Thread 類經常使用的屬性和方法

下表列出了 Thread 類的一些經常使用的 屬性htm

屬性 描述
CurrentContext 獲取線程正在其中執行的當前上下文。
CurrentCulture 獲取或設置當前線程的區域性。
CurrentPrinciple 獲取或設置線程的當前負責人(對基於角色的安全性而言)。
CurrentThread 獲取當前正在運行的線程。
CurrentUICulture 獲取或設置資源管理器使用的當前區域性以便在運行時查找區域性特定的資源。
ExecutionContext 獲取一個 ExecutionContext 對象,該對象包含有關當前線程的各類上下文的信息。
IsAlive 獲取一個值,該值指示當前線程的執行狀態。
IsBackground 獲取或設置一個值,該值指示某個線程是否爲後臺線程。
IsThreadPoolThread 獲取一個值,該值指示線程是否屬於託管線程池。
ManagedThreadId 獲取當前託管線程的惟一標識符。
Name 獲取或設置線程的名稱。
Priority 獲取或設置一個值,該值指示線程的調度優先級。
ThreadState 獲取一個值,該值包含當前線程的狀態。

下表列出了 Thread 類的一些經常使用的 方法對象

相關文章
相關標籤/搜索