真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

goroutine/channel(2)-創(chuàng)新互聯(lián)

package main

import "fmt"

func main() {

    dataChan := make(chan int, 5)
    syncChan1 := make(chan struct{}, 1)
    syncChan2 := make(chan struct{}, 2)

    //演示接收操作
    go func() {
        <- syncChan1
        for {
            if elem, ok := <- dataChan; ok {
                fmt.Printf("Received: %d [receiver]\n", elem)
            } else {
                break
            }
        }
        fmt.Println("Done. [receiver]")
        syncChan2 <- struct{}{}
    }()

    //演示發(fā)送操作
    go func() {
        for i := 0; i < 5; i++ {
            dataChan <- i
            fmt.Printf("Sent: %d [sender]\n", i)
        }
        close(dataChan)
        syncChan1 <- struct{}{}
        fmt.Println("Done. [sender]")
        syncChan2 <- struct{}{}
    }()

    <-syncChan2
    <-syncChan2

}

輸出:
Sent: 0 [sender]
Sent: 1 [sender]
Sent: 2 [sender]
Sent: 3 [sender]
Sent: 4 [sender]
Done. [sender]
Received: 0 [receiver]
Received: 1 [receiver]
Received: 2 [receiver]
Received: 3 [receiver]
Received: 4 [receiver]
Done. [receiver]

創(chuàng)新互聯(lián)公司10多年企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站建設(shè)及推廣,對(duì)成都iso認(rèn)證等多個(gè)行業(yè)擁有多年的營(yíng)銷推廣經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

Process finished with exit code 0

調(diào)用close函數(shù)可以關(guān)閉一個(gè)通道。但是,這樣做的時(shí)候一定要特別注意:試圖向一個(gè)已經(jīng)關(guān)閉的通道發(fā)送元素時(shí),會(huì)讓發(fā)送操作引起運(yùn)行時(shí)恐慌。因此,你總是應(yīng)該保證安全的前提下關(guān)閉通道。這會(huì)設(shè)計(jì)到一些技巧,比如for語(yǔ)句和select語(yǔ)句。無(wú)論怎樣都不應(yīng)該在接收端關(guān)閉通道。因?yàn)樵诮邮斩送ǔo(wú)法判斷發(fā)送端是否還會(huì)向該通道發(fā)送元素。另一方面,在發(fā)送端關(guān)閉通道一般不會(huì)對(duì)接收端的接收操作產(chǎn)生什么影響。如果通道在被關(guān)閉時(shí)其中仍然有元素,你依然可以接收表達(dá)式取出,并根據(jù)該表達(dá)式的第二個(gè)結(jié)果判斷通道是否已無(wú)元素可取。
上面的例子:在發(fā)送方,我在向通道dataChan發(fā)送完所有元素并關(guān)閉通道后,才告知接收方開始接收。雖然通道已經(jīng)關(guān)閉,但是對(duì)接收操作并無(wú)影響,接收方依然可以在接收完所有元素后自行結(jié)束。
最后還有兩點(diǎn)要注意:
1.對(duì)弈同一個(gè)通道,僅允許關(guān)閉一次,對(duì)通道的重復(fù)關(guān)閉會(huì)引發(fā)運(yùn)行恐慌。
2.在調(diào)用close函數(shù)時(shí),你需要把代表欲關(guān)閉的那個(gè)通道的變量作為參數(shù)傳入。如果此時(shí)該變量的值為nil,就會(huì)引發(fā)運(yùn)行時(shí)恐慌

單向channel:
一個(gè)只進(jìn)步出的通道沒有任何意義。其實(shí),單項(xiàng)通道應(yīng)由雙向通道變換而來(lái),我們可以用這種變換來(lái)約束程序?qū)νǖ赖氖褂梅绞剑?/p>

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。


當(dāng)前題目:goroutine/channel(2)-創(chuàng)新互聯(lián)
本文地址:http://weahome.cn/article/eihcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部