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

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

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

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

作者:顏開(kāi)點(diǎn)擊:71次評(píng)論:0次標(biāo)簽: Go語(yǔ)言

Flash版LOGO語(yǔ)言V9.8 免費(fèi)簡(jiǎn)體中文版
  • 類型:編程工具大。3.2M語(yǔ)言:中文 評(píng)分:6.3
  • 標(biāo)簽:
立即下載
6 頁(yè) ChainFilter技術(shù)

ChainFilter技術(shù)

      前面提到了Future技術(shù)首尾相連,可以形成一個(gè)并發(fā)的pipe filter。這種方式可以做很多事情,如果每個(gè)Filter都由同一個(gè)函數(shù)組成,還可以有一種簡(jiǎn)單的辦法把他們連起來(lái)。

由于每個(gè)Filter協(xié)程都可以并發(fā)運(yùn)行,這樣的結(jié)構(gòu)非常有利于多核環(huán)境。下面是一個(gè)例子,用這種模式來(lái)產(chǎn)生素?cái)?shù)。

// Aconcurrent prime sieve

packagemain

// Sendthe sequence 2, 3, 4, ... to channel 'ch'.

funcGenerate(ch chan<- int) {

         for i := 2; ; i++ {

                  ch<- i // Send 'i' to channel 'ch'.

         }

}

// Copythe values from channel 'in' to channel 'out',

//removing those divisible by 'prime'.

funcFilter(in <-chan int, out chan<- int, prime int) {

         for {

                   i := <-in // Receive valuefrom 'in'.

                   if i%prime != 0 {

                            out <- i // Send'i' to 'out'.

                   }

         }

}

// Theprime sieve: Daisy-chain Filter processes.

funcmain() {

         ch := make(chan int) // Create a newchannel.

         go Generate(ch)      // Launch Generate goroutine.

         for i := 0; i < 10; i++ {

                   prime := <-ch

                   print(prime, "\n")

                   ch1 := make(chan int)

                   go Filter(ch, ch1, prime)

                   ch = ch1

         }

}

        上面的程序創(chuàng)建了10個(gè)Filter,每個(gè)分別過(guò)濾一個(gè)素?cái)?shù),所以可以輸出前10個(gè)素?cái)?shù)。   

        Chain-Filter通過(guò)簡(jiǎn)單的代碼創(chuàng)建并發(fā)的過(guò)濾器鏈。這種辦法還有一個(gè)好處,就是每個(gè)通道只有兩個(gè)協(xié)程會(huì)訪問(wèn),就不會(huì)有激烈的競(jìng)爭(zhēng),性能會(huì)比較好。

    相關(guān)評(píng)論

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

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

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

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

    沒(méi)有數(shù)據(jù)