golang for thread channel routine consumer and producer

package main

import "time"

func testThread(){
    i:=3
    go func(a int){
        println(a)
        println("this is go func!")
    }(i)

    time.Sleep(1*time.Second)
    println("hello main thread!")
}

func testChannel(){
    //read write channel
    ch:=make(chan int,1)
    ch<-3
    go func(){
        v:=<-ch
        println(v)
    }()
    time.Sleep(1*time.Second)
    println("finish chan!")
}

func producer(p chan<-int){
    for i:=0;i<10;i++{
        p<-i
        println("into chan:",i)
    }
    println("finish the producer!")

}

func consumers(c <-chan int){
    for i:=0;i<10;i++{
        v:=<-c
        println("get from channel:",v)

    }
    println("finish the consumers!!")
}

//test producer and consumer
func testProducerConsumer(){
    ch:=make(chan int,1)
    go consumers(ch)
    go producer(ch)
    time.Sleep(2*time.Second)
    println("finish all the consumer and producer!!")
}

func main() {
    //testThread()
    //testChannel()
    testProducerConsumer()
}

 

熟悉语法:chan,go多线程

 

posted @ 2017-05-06 00:27  石湖山庄  阅读(312)  评论(0编辑  收藏  举报