西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)其它知識 → Go語言并發(fā)之美:解釋其中內(nèi)核、外延

Go語言并發(fā)之美:解釋其中內(nèi)核、外延

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:微博時間:2012/11/28 13:47:54字體大。A-A+

作者:顏開點(diǎn)擊:71次評論:0次標(biāo)簽: Go語言

Flash版LOGO語言V9.8 免費(fèi)簡體中文版
  • 類型:編程工具大小:3.2M語言:中文 評分:6.3
  • 標(biāo)簽:
立即下載
5 頁 并發(fā)循環(huán)

并發(fā)循環(huán)

       循環(huán)往往是性能上的熱點(diǎn)。如果性能瓶頸出現(xiàn)在CPU上的話,那么九成可能性熱點(diǎn)是在一個循環(huán)體內(nèi)部。所以如果能讓循環(huán)體并發(fā)執(zhí)行,那么性能就會提高很多。

要并發(fā)循環(huán)很簡單,只有在每個循環(huán)體內(nèi)部啟動協(xié)程。協(xié)程作為循環(huán)體可以并發(fā)執(zhí)行。調(diào)用啟動前設(shè)置一個計數(shù)器,每一個循環(huán)體執(zhí)行完畢就在計數(shù)器上加一個元素,調(diào)用完成后通過監(jiān)聽計數(shù)器等待循環(huán)協(xié)程全部完成。

//建立計數(shù)器

sem :=make(chan int, N);

//FOR循環(huán)體

for i,xi:= range data {

         //建立協(xié)程

    go func (i int, xi float) {

        doSomething(i,xi);

                   //計數(shù)

        sem <- 0;

    } (i, xi);

}

// 等待循環(huán)結(jié)束

for i := 0; i < N; ++i { <-sem }

       上面是一個并發(fā)循環(huán)例子。通過計數(shù)器來等待循環(huán)全部完成。如果結(jié)合上面提到的Future技術(shù)的話,則不必等待?梢缘鹊秸嬲枰慕Y(jié)果的地方,再去檢查數(shù)據(jù)是否完成。

        通過并發(fā)循環(huán)可以提供性能,利用多核,解決CPU熱點(diǎn)。正因?yàn)閰f(xié)程可以大量創(chuàng)建,才能在循環(huán)體中如此使用,如果是使用線程的話,就需要引入線程池之類的東西,防止創(chuàng)建過多線程,而協(xié)程則簡單的多。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)