關於多線程編程

原文:http://blog.csdn.net/newzhhsh/archive/2008/08/19/2797302.aspx

    CPU是以時間片的方式爲進程分配CUP處理時間的,當一個進程以同步的方式去完成幾件事情時,此進程必須完成了第一件事情以後再做第二件事,如此按順序地向CPU請求完成要做的事情。在此單線程的工作模式下,如果把CUP看作是一共有100個時間片的話,CPU可能一直都只是花了其中的10個時間片來處理當前進程所要做的事情,只是用到了CPU的10%的時間片,而其他時間都白白浪費了,當然,實際上CPU的工作模式還是做完一件事以後再去做另一件事,只是CUP的處理速度非常快,很快就處理完成所請求的情事。

    爲了提高CPU的使用率,採用多線程的方式去同時完成幾件事情而互不干擾,如當前進程要完成三件事情1、2、3,那麼CPU會分別用10%的時間來同時處理這3件事情,從而讓CPU的使用率達到了30%,大大地提高了CPU的利用率。多線程的好處在處理一些特殊的場合其優勢尤其明顯。比如下載文件,你要一邊下載一邊顯示進度一邊保存,在這種情況下,如果沒有用多線程的話,沒有意外的話一般都會把主線程阻塞,比如進度條的進度根本沒有隨着已下載的量而變化,堪至是整個窗體都動不了,用多線程就可以很好地解決這個問題。

    這裏有一個生活實例可能更好地去理解多線程:回去看你女朋友做飯,正常的話她都會把洗好的菜(肉)先放到鍋裏煮,然後一邊洗別的菜或處理別的事情,如:洗碗、收拾桌臺準備開飯,人還是一個人,但她同時做幾件事情,這樣就可以大大地提高效率。總的一句話就是:CPU還是要花同樣多的時間去完成所有的事情,但多線程可以讓CPU摻插地同時做多件事情,在視覺上讓用戶覺得計算機在同時幫他處理多件事情,更好地改善用戶體驗。

    瞭解了多線程的好處以後,就要了解應該在什麼樣的情況下使用多線程技術。因爲並不是說所有情況下用多線程都是好事,因爲多線程的情況下,CPU還要花時間去維護,CPU處理各線程的請求時在線程間的切換也要花時間,所以一般情況下是可以不用多線程的,用了有時反而會得不償失。大多情況下,要用到多線程的主要是需要處理大量的IO操作時或處理的情況需要花大量的時間等等,比如:讀寫文件、視頻圖像的採集、處理、顯示、保存等。

發佈了22 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章