求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

多線程檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
多線程

多線程(multithreading),是指從軟件或者硬件上實現多個線程並發執行的技術。具有多線程能力的計算機因有硬件支持而能夠在同一時間執行多於一個線程,進而提升整體處理性能。具有這種能力的系統包括對稱多處理機、多核心處理器以及芯片級多處理或同時多線程處理器。在一個程序中,這些獨立運行的程序片段叫作「線程」(Thread),利用它編程的概念就叫作「多線程處理」。

簡介

在計算機編程中,一個基本的概念就是同時對多個任務加以控制。許多程序設計問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進程。可以通過多種途徑達到這個目的。最開始的時候,那些掌握機器低級語言的程序員編寫一些「中斷服務例程」,主進程的暫停是通過硬件級的中斷實現的。儘管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價高昂問題。中斷對那些實時性很強的任務來說是很有必要的。但對於其他許多問題,只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求。最開始,線程只是用於分配單個處理器的處理時間的一種工具。但假如操作系統本身支持多個處理器,那麼每個線程都可分配給一個不同的處理器,真正進入「並行運算」狀態。從程序設計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器。程序在邏輯意義上被分割為數個線程;假如機器本身安裝了多個處理器,那麼程序會運行得更快,毋需作出任何特殊的調校。根據前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個問題:共享資源!如果有多個線程同時運行,而且它們試圖訪問相同的資源,就會遇到一個問題。舉個例子來說,兩個線程不能將信息同時發送給一台打印機。為解決這個問題,對那些可共享的資源來說(比如打印機),它們在使用期間必須進入鎖定狀態。所以一個線程可將資源鎖定,在完成了它的任務後,再解開(釋放)這個鎖,使其他線程可以接着使用同樣的資源。

評價

無論是過去還是現在,世界上大多數計算機仍然採用的是馮·諾依曼結構,這種結構的特點就是順序處理,一個處理器在同個時刻只能處理一件事情。 Windows 95/NT採用一種全新的任務調度策略,它把一個進程劃分為多個線程,每個線程輪流占用CPU的運算時間,操作系統不斷地把線程掛起、喚醒、再掛起、再喚程,如此反覆,由於現在CPU的速度比較快,給人的感覺是多個線程在同時執行,就好像有多個CPU存在於計算機中一樣多線程的一個典型例子是:用資源管理器複製文件時,一方面在進行磁盤讀寫操作,同時一張紙不停地從一個文件夾飄到另一個文件夾,這個飄的動作實際上是一段視頻剪輯,也就是說,資源管理器能夠同時進行磁盤讀寫和播放視頻剪輯。[1]

參考文獻

  1. 多線程搜狗