導航:首頁 > 編程語言 > 多線程編程的目的

多線程編程的目的

發布時間:2023-03-10 09:53:04

❶ 為什麼要使用多線程

在一個程序中,這些獨立運行的程序片斷叫作「線程」(Thread),利用它編程的概念就叫作「多線程處理」。

在計算機編程中,一個基本的概念就是同時對多個任務加以控制。許多程序設計問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進程。可以通過多種途徑達到這個目的。最開始的時候,那些掌握機器低級語言的程序員編寫一些「中斷服務常式」,主進程的暫停是通過硬體級的中斷實現的。盡管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價高昂問題。中斷對那些實時性很強的任務來說是很有必要的。但對於其他許多問題,只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求。

最開始,線程只是用於分配單個處理器的處理時間的一種工具。但假如操作系統本身支持多個處理器,那麼每個線程都可分配給一個不同的處理器,真正進入「並行運算」狀態。從程序設計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器。程序在邏輯意義上被分割為數個線程;假如機器本身安裝了多個處理器,那麼程序會運行得更快,毋需作出任何特殊的調校。根據前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個問題:共享資源!如果有多個線程同時運行,而且它們試圖訪問相同的資源,就會遇到一個問題。舉個例子來說,兩個線程不能將信息同時發送給一台列印機。為解決這個問題,對那些可共享的資源來說(比如列印機),它們在使用期間必須進入鎖定狀態。所以一個線程可將資源鎖定,在完成了它的任務後,再解開(釋放)這個鎖,使其他線程可以接著使用同樣的資源。

多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率。線程是在同一時間需要完成多項任務的時候實現的。

❷ 在c++中,在多線程編程中,為什麼要把一些線程給掛起呢這樣做有什麼目的呢

線程的執行需要提供運算資源,而計算機最直接的運算資源,除了內存,就是CPU了。線程的執行需要佔用CPU時間。操作系統為了模擬用戶「看起來的並發",其底層其實是使用時間片輪詢的策略,也就是,會將CPU時間切割成粒度較小的時間片,然後輪流提交到各個線程去執行,在用戶可感知的時間內,每個線程也就都得到了運行的機會。
交給」各個線程「去執行,更確切的說法是,交給」各個等待運行的線程「去執行。而掛起線程,實際上,就是告訴操作系統,這個線程不活躍了,暫時不需要運算了,可以從上述的等待運行線程隊列中去去掉,然後放入」掛起線程池「中,以後操作系統CPU調度的時候,就不再輪詢到這個線程無謂浪費CPU時間了,可以讓其他真正active的線程得到更充分的CPU運行時間。
那如果這個線程掛起後,在以後某一時刻想重新運行起來怎麼辦?這個時間就需要去喚醒這個線程了,喚醒線程的過程,其實也就是從」掛起線程池「放入」等待運行的線程隊列「過程,當CPU時間輪詢到這個線程,就又可以愉快的玩耍了。

❸ C++多線程編程問題

多線程工作可以提高解決問題的速度

你舉得例子可以多線程實現,但是更多的人稱之為分布式計算
多線程主要是創建多個線程,每個線程負責自己的事情,每個線程只對主線程負責
至於解決問題的速度應該可以達到提高一半,但是你要注意資源的互斥,互斥處理不好估計會事倍功半

閱讀全文

與多線程編程的目的相關的資料

熱點內容
海康攝像螢石雲伺服器 瀏覽:814
安卓手機怎麼改安卓版名 瀏覽:147
雅思聽力807詞彙pdf 瀏覽:897
黃豆私人加密 瀏覽:192
java分鍾轉換小時 瀏覽:245
易語言伺服器如何提高 瀏覽:591
網站主機伺服器地址查看 瀏覽:859
演算法學不會能當程序員嗎 瀏覽:119
程序員技術交流研究 瀏覽:814
javaresponse文件 瀏覽:734
linuxrar壓縮文件夾 瀏覽:218
魅藍手機連接不上伺服器怎麼回事 瀏覽:379
工行app怎麼改已綁定銀行卡 瀏覽:533
oppo晶元程序員 瀏覽:602
oppok3應用怎麼加密 瀏覽:327
電腦軟盤怎麼加密碼 瀏覽:815
伺服器光交換機有什麼用 瀏覽:708
app上怎麼拍蛙小俠 瀏覽:217
志高聊天app怎麼下載 瀏覽:635
郵政app怎麼不能掃付款碼 瀏覽:559