国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go語言程序設計-第9章--使用共享變量實現(xiàn)并發(fā)

這篇具有很好參考價值的文章主要介紹了Go語言程序設計-第9章--使用共享變量實現(xiàn)并發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Go語言程序設計-第9章–使用共享變量實現(xiàn)并發(fā)

9.1 竟態(tài)

一個能在串行程序中正確工作的函數(shù)。如果這個函數(shù)在并發(fā)調(diào)用時仍然能正確工作,那么這個函數(shù)是并發(fā)安全的。在這里并發(fā)調(diào)用是指,在沒有額外同步機制的情況下,從兩個或者多個 goroutine 同時調(diào)用這個函數(shù)。如果一個類型的所有可訪問方法和操作都是并發(fā)安全時,則它可稱為并發(fā)安全的類型。

數(shù)據(jù)竟態(tài)發(fā)生于兩個 goroutine 并發(fā)讀寫同一個變量,并且至少一個是寫入時。有3個方法避免數(shù)據(jù)竟態(tài)。
第一種方法是不要修改變量。
第二種方法是避免多個 goroutine 訪問同一個變量。
第三種方法是允許多個 goroutine 訪問同一個變量,但是在同一時間只有一個 goroutine 可以訪問,這種方法稱為互斥機制。

9.2 互斥鎖:sync.Mutex

在 Mutex 的 Lock 和 Unlock 之間,可能自由地讀取和修改共享變量,這一部分稱為臨界區(qū)域。

9.3 讀寫互斥鎖:sync.RWMutex

僅在絕大部分 goroutine 都在獲取讀鎖并且鎖競爭比較激烈時,RWMutex 才有優(yōu)勢。

9.4 內(nèi)存同步

現(xiàn)代計算機一般會有多個處理器,每個處理器都有內(nèi)存的本地緩存。為了提高效率,對內(nèi)存的寫入是緩存在每個處理器中的,只有在必要時才刷回內(nèi)存。甚至刷回內(nèi)存的順序都可能與 goroutine 的寫入順序不一致。像通道或者互斥鎖操作這樣的同步原語都會使處理器把積累的寫操作刷回內(nèi)存并提交。

9.5 延遲初始化: sync.Once

var loadIconsOnce sync.Once
var icons map[string]image.Image
// 并發(fā)安全
func Icon(name string) image.Image {
	loadiconsOnce.Do(loadIcons)
	return icons[name]
}

9.6 竟態(tài)檢測器

把 -race 命令行添加到 go build, go run, go test 命令里面即可以使用該功能。

9.8 goroutine 與線程

9.8.1 可增長的棧

每個 OS 線程都有一個固定大小的棧內(nèi)存(通常為 2MB),棧內(nèi)存區(qū)域用于保存在其他函數(shù)調(diào)用期間哪些正在執(zhí)行或臨時暫停函數(shù)中的局部變量。這個固定的棧大小既又太大又太小。對于一個小的 goroutine,2MB的棧是一個巨大的浪費。對于復雜的和深度遞歸的函數(shù),固定大小的棧始終不夠大。

作為對比,一個 goroutine 在生命周期開始只有一個很小的棧,典型情況下為 2KB。與 OS 線程不同的是,goroutine 的棧不是固定大小的,它可以按需增大和縮小。goroutine 的棧可以到達 1GB,比線程典型的固定大小棧高出幾個數(shù)量級。

Go 運行時包含一個自己的調(diào)度器,這個調(diào)度器使用一個稱為 m:n 調(diào)度的技術(因為它可以復用/調(diào)度 m 個 goroutine 到 n 個 OS 線程)。Go 調(diào)度器與內(nèi)核調(diào)度器的工作類似,但只關心單個 Go 程序的 goroutine 調(diào)度問題。

9.8.3 GOMAXPROCS

Go 調(diào)度器使用 GOMAXPROCS 參數(shù)確定使用多少個 OS 線程來同時執(zhí)行 Go 代碼。默認值是機器上 CPU 的數(shù)量。

GOMAXPROCS=1 go run hack-cliche.go

9.8.4 goroutine 沒有標識

所以沒有線程本地變量之類的結(jié)構(gòu)。文章來源地址http://www.zghlxwxcb.cn/news/detail-781344.html

到了這里,關于Go語言程序設計-第9章--使用共享變量實現(xiàn)并發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序共享充電樁系統(tǒng)設計與實現(xiàn)

    微信小程序共享充電樁系統(tǒng)設計與實現(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、

    2024年02月04日
    瀏覽(24)
  • 微信小程序畢業(yè)設計作品成品(14)微信小程序校園共享洗衣系統(tǒng)設計與實現(xiàn)

    微信小程序畢業(yè)設計作品成品(14)微信小程序校園共享洗衣系統(tǒng)設計與實現(xiàn)

    博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月08日
    瀏覽(41)
  • 微信共享充電樁小程序系統(tǒng)設計與實現(xiàn)

    微信共享充電樁小程序系統(tǒng)設計與實現(xiàn)

    目的 :本課題主要目標是設計并能夠?qū)崿F(xiàn)一個基于微信共享充電樁小程序系統(tǒng),前臺用戶使用小程序,小程序使用微信開發(fā)者工具開發(fā);后臺管理使用基PHP+MySql開發(fā),開發(fā)工具使用phpstorm;通過后臺添加充電樁信息,場地和收費信息,訂單管理等,用戶通過小程序登錄,查看

    2024年02月12日
    瀏覽(31)
  • 微信小程序畢業(yè)設計作品成品(22)微信小程序共享充電樁預約系統(tǒng)設計與實現(xiàn)

    微信小程序畢業(yè)設計作品成品(22)微信小程序共享充電樁預約系統(tǒng)設計與實現(xiàn)

    博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月08日
    瀏覽(24)
  • 微信小程序畢業(yè)設計作品成品(26)微信小程序共享停車位預約系統(tǒng)設計與實現(xiàn)

    微信小程序畢業(yè)設計作品成品(26)微信小程序共享停車位預約系統(tǒng)設計與實現(xiàn)

    博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月08日
    瀏覽(31)
  • 微信小程序畢業(yè)設計作品成品(27)微信小程序共享會議室預約系統(tǒng)設計與實現(xiàn)

    微信小程序畢業(yè)設計作品成品(27)微信小程序共享會議室預約系統(tǒng)設計與實現(xiàn)

    博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月08日
    瀏覽(23)
  • 微信共享會議室預約小程序系統(tǒng)設計與實現(xiàn)

    微信共享會議室預約小程序系統(tǒng)設計與實現(xiàn)

    目的 :本課題主要目標是設計并能夠?qū)崿F(xiàn)一個基于微信小程序會議室預約系統(tǒng),前臺用戶使用小程序,后臺管理使用基PHP+MySql的B/S架構(gòu);通過后臺添加會議室信息、管理用戶信息、管理預約信息;前臺用戶通過小程序登錄,查看會議室信息、發(fā)起預約。 意義 :微信小程序會

    2024年02月11日
    瀏覽(29)
  • 基于php微信小程序共享洗衣系統(tǒng)設計與實現(xiàn)

    基于php微信小程序共享洗衣系統(tǒng)設計與實現(xiàn)

    開發(fā)概要 開發(fā)操作系統(tǒng):windows10 + 4G內(nèi)存 + 500G 小程序開發(fā):微信開發(fā)者工具(MINA框架) 后臺環(huán)境:IIS +PHP 后臺開發(fā)語言:PHP 后臺開發(fā)工具:Dreamweaver +PhpStorm 數(shù)據(jù)庫:mysql8 數(shù)據(jù)庫管理工具:navicat 其他開發(fā)語言:html + css +javascript

    2024年02月11日
    瀏覽(22)
  • 微信智慧共享停車位小程序系統(tǒng)設計與實現(xiàn)

    微信智慧共享停車位小程序系統(tǒng)設計與實現(xiàn)

    目的 :首先,在社會上“停車難”是一個眾所周知的問題,每個小區(qū),每個大廈都有自己的停車場,但是在沒有進入停車場之前,我們沒辦法知道是否有空車位,空車位在哪個地方。為了解決這個問題我們打算做一個停車場車位預約小程序,來解決車主在進入停車場之前了解

    2024年02月10日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包