W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
ch16-00-concurrency.md
commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f
安全且高效的處理并發(fā)編程是 Rust 的另一個(gè)主要目標(biāo)。并發(fā)編程(Concurrent programming),代表程序的不同部分相互獨(dú)立的執(zhí)行,而 并行編程(parallel programming)代表程序不同部分于同時(shí)執(zhí)行,這兩個(gè)概念隨著計(jì)算機(jī)越來越多的利用多處理器的優(yōu)勢(shì)時(shí)顯得愈發(fā)重要。由于歷史原因,在此類上下文中編程一直是困難且容易出錯(cuò)的:Rust 希望能改變這一點(diǎn)。
起初,Rust 團(tuán)隊(duì)認(rèn)為確保內(nèi)存安全和防止并發(fā)問題是兩個(gè)分別需要不同方法應(yīng)對(duì)的挑戰(zhàn)。隨著時(shí)間的推移,團(tuán)隊(duì)發(fā)現(xiàn)所有權(quán)和類型系統(tǒng)是一系列解決內(nèi)存安全 和 并發(fā)問題的強(qiáng)有力的工具!通過利用所有權(quán)和類型檢查,在 Rust 中很多并發(fā)錯(cuò)誤都是 編譯時(shí) 錯(cuò)誤,而非運(yùn)行時(shí)錯(cuò)誤。因此,相比花費(fèi)大量時(shí)間嘗試重現(xiàn)運(yùn)行時(shí)并發(fā) bug 出現(xiàn)的特定情況,Rust 會(huì)拒絕編譯不正確的代碼并提供解釋問題的錯(cuò)誤信息。因此,你可以在開發(fā)時(shí)修復(fù)代碼,而不是在部署到生產(chǎn)環(huán)境后修復(fù)代碼。我們給 Rust 的這一部分起了一個(gè)綽號(hào) 無畏并發(fā)(fearless concurrency)。無畏并發(fā)令你的代碼免于出現(xiàn)詭異的 bug 并可以輕松重構(gòu)且無需擔(dān)心會(huì)引入新的 bug。
注意:出于簡(jiǎn)潔的考慮,我們將很多問題歸類為 并發(fā),而不是更準(zhǔn)確的區(qū)分 并發(fā)和(或)并行。如果這是一本專注于并發(fā)和/或并行的書,我們肯定會(huì)更加精確的。對(duì)于本章,當(dāng)我們談到 并發(fā) 時(shí),請(qǐng)自行腦內(nèi)替換為 并發(fā)和(或)并行。
很多語言所提供的處理并發(fā)問題的解決方法都非常有特色。例如,Erlang 有著優(yōu)雅的消息傳遞并發(fā)功能,但只有模糊不清的在線程間共享狀態(tài)的方法。對(duì)于高級(jí)語言來說,只實(shí)現(xiàn)可能解決方案的子集是一個(gè)合理的策略,因?yàn)楦呒?jí)語言所許諾的價(jià)值來源于犧牲一些控制來換取抽象。然而對(duì)于底層語言則期望提供在任何給定的情況下有著最高的性能且對(duì)硬件有更少的抽象。因此,Rust 提供了多種工具,以符合實(shí)際情況和需求的方式來為問題建模。
如下是本章將要涉及到的內(nèi)容:
Sync
? 和 ?Send trait
?,將 Rust 的并發(fā)保證擴(kuò)展到用戶定義的以及標(biāo)準(zhǔn)庫(kù)提供的類型中。Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: