[第1篇] .NET 中的線程
在第一章我們描述了什么是線程。我們講述了很多人可能已經很熟悉的背景知識。知道了線程的哪部分最重要。在這一章,你將看到如何實現一些基本的線程;然而了解何時使用線程相對知道基本實現來說更重要一些。
[第2篇] 創建一個線程
這一部分通過兩個例子讓大家了解如何創建一個線程、應用程序域,了解線程屬性和線程優先級。
[第3篇] 時鍾和回調
由於線程與應用程序代碼中的其他代碼相比是無序運行的,我們不能確定在一個線程中影響一個特定共享資源的動作會在另外一個線程訪問同樣共享資源之前完成。有很多方法處理這些問題,但是這里我們將介紹一種簡單方式;使用定時器/時鍾。通過定時器,我們可以確定一個方法在一個特定時間間隔內執行,這個方法可以在繼續運行之前檢查需要的動作是否已經完成。這是一個非常簡單的模型,但是可以應用到很多場景中去。
[第4篇] 線程的生命周期
當一個線程計划執行時它可以經過幾個狀態,包括未開始,活躍,睡眠,等等。線程類包含幾個允許你啟動、停止、恢復、退出、暫停以及等待一個線程的方法。我們可以使用ThreadState屬性來獲取線程的當前狀態。
[第5篇] 線程掛起與恢復
線程類的Suspend() 和 Resume() 方法可以用來掛起/恢復線程。Suspend()方法將會立即掛起當前線程直到另外一個線程把它喚醒。當我們調用Suspend()方法時,線程將會進入SuspendRequested 或者 Suspended 狀態。
[第6篇] 終止/等待線程
Abort()方法可以用來終止當前線程。不論何種情況下你想終止線程,比如線程執行了太長時間或者用戶取消了之前的決定,Abort()方法都很重要。在一個花費很長時間的搜索進程中你可能想使用這個方法。
[第7篇] 線程的優勢
額,我猜你現在可能會這么想“既然線程會對我的程序產生負面影響,那么我為什么要使用它呢?”。其實問題的關鍵不在於到底用不用線程,而在於何時何地使用線程。知道在什么情況下應該使用線程是好的設計決策的核心。使用線程有兩個不同的優勢。在這一部分,我們將討論這兩個優勢是什么。
[第8篇] 線程陷阱
我們已經討論過在程序中使用線程的兩個主要優勢。然而,在另外一些情況下使用線程會是一個糟糕的決定。很明顯,我們並不打算列出一個完整的關於在何時創建新線程的列表,而是告訴你一個糟糕的使用線程的決定都包含哪些內容。主要有兩種情況:第一種是當保證程序的執行順序非常重要時,第二種看起來更像是一個代碼中的錯誤-在一個循環中創建新線程。