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

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

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

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:微博時(shí)間: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)簽:
立即下載
3 頁 多路復(fù)用

多路復(fù)用

多路復(fù)用是讓一次處理多個(gè)隊(duì)列的技術(shù)。Apache使用處理每個(gè)連接都需要一個(gè)進(jìn)程,所以其并發(fā)性能不是很好。而Nginx使用多路復(fù)用的技術(shù),讓一 個(gè)進(jìn)程處理多個(gè)連接,所以并發(fā)性能比較好。同樣,在協(xié)程的場合,多路復(fù)用也是需要的,但又有所不同。多路復(fù)用可以將若干個(gè)相似的小服務(wù)整合成一個(gè)大服務(wù)。

那么讓我們用多路復(fù)用技術(shù)做一個(gè)更高并發(fā)的隨機(jī)數(shù)生成器吧。

// 函數(shù)rand_generator_3 ,返回通道(Channel)

funcrand_generator_3() chan int {

         // 創(chuàng)建兩個(gè)隨機(jī)數(shù)生成器服務(wù)

         rand_generator_1 := rand_generator_2()

         rand_generator_2 := rand_generator_2()

         //創(chuàng)建通道

         out := make(chan int)

         //創(chuàng)建協(xié)程

         go func() {

                   for {

                            //讀取生成器1中的數(shù)據(jù),整合

                            out <-<-rand_generator_1

                   }

         }()

         go func() {

                   for {

                            //讀取生成器2中的數(shù)據(jù),整合

                            out <-<-rand_generator_2

                   }

         }()

         return out

}

上面是使用了多路復(fù)用技術(shù)的高并發(fā)版的隨機(jī)數(shù)生成器。通過整合兩個(gè)隨機(jī)數(shù)生成器,這個(gè)版本的能力是剛才的兩倍。雖然協(xié)程可以大量創(chuàng)建,但是眾多協(xié)程還是會(huì) 爭搶輸出的通道。Go語言提供了Select關(guān)鍵字來解決,各家也有各家竅門。加大輸出通道的緩沖大小是個(gè)通用的解決方法。

多路復(fù)用技術(shù)可以用來整合多個(gè)通道。提升性能和操作的便捷。配合其他的模式使用有很大的威力。

    相關(guān)評論

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

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

    熱門評論

    最新評論

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

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

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