<b>線程不是目的,而是方法和手段。</b>
在程式中我們為什麼要使用到多線程,如何使用多線程,根據我學習的體會應該考慮到下面幾個問題:
1、運算時間
這是選擇多線程的必要條件。如果一段代碼非常耗時,在他工作的時間内程式失去響應,這是無法忍受的。一般情況下會把這段代碼放到一個獨立的線程裡面,這樣在他運算的過程中,程式還可以繼續處理其他事情。當然,如果是不一般的情況,比如說你的程式就完成這麼一個運算任務,然後就結束了,運算過程中程式也不需要作其他工作,就沒必要開起一個線程了。
2、資料通路特點
資料通路特點是考慮選擇什麼樣的多線程模式必須參考的條件。比如說資料是隻讀的還是讀寫的,如果是隻讀的,一般情況下就不需要考慮互斥性,可以多個線程同時通路資料。如果是讀寫的,一個線程在讀取的同時,另一個線程在改寫資料,這樣很可能得不到正确的資料,是以一般情況下,都要對可讀寫資料進行互斥保護。
關于資料通路特點另一個需要考慮的因素是,工作線程對所通路的資料是否有條件限制。比如說,一個線程在不停的改變資料,一會變為正數,一會變為負數;而另一個線程的工作是擷取資料的平方根,是以,這個線程在工作之前就必須測試資料通路條件,如果是正數當然可以工作,如果是負數就必須等待。等待什麼呢?當然是等待第一個線程的通知,“現在資料發生變化了,請重新嘗試一下吧!”,這個工作是第一個線程改變資料狀态後完成的。
3、線程數量和資料吞吐性
一般情況下,同時工作的線程越多,資料吞吐性越好,但是在考慮到互斥保護的時候,又不能讓太多的線程同時工作,在保證資料線程安全的情況下,盡量增大資料吞吐性,是以這也是在選擇多線程模式時需要考慮的兩個因素。
再遇到需要使用多線程的情況,隻要确定了這幾個特點,基本上就能知道選擇什麼樣的多線程模式了。
本文轉自左洸部落格園部落格,原文連結:http://www.cnblogs.com/myqiao/archive/2006/04/17/377217.html,如需轉載請自行聯系原作者