管道阻塞问题"/>
golang的管道阻塞问题
package mainimport ("fmt""sync"//"time"
)
var wg sync.WaitGroup
func writeData(intchan chan int){defer wg.Done()for i := 1; i <= 9; i++ {intchan<-ifmt.Println("写入的数据为:",i)//time.Sleep(time.Second)}close(intchan)
}
func readData( intchan chan int) {defer wg.Done()for value := range intchan {fmt.Println("读取的数据为",value)}
}func main() {intchan := make(chan int ,10)wg.Add(1)go writeData(intchan)//go readData(intchan)wg.Wait()}
package mainimport ("fmt""sync"//"time"
)
var wg sync.WaitGroup
func writeData(intchan chan int){defer wg.Done()for i := 1; i <= 10; i++ {intchan<-ifmt.Println("写入的数据为:",i)//time.Sleep(time.Second)}close(intchan)
}
func readData( intchan chan int) {defer wg.Done()for value := range intchan {fmt.Println("读取的数据为",value)}
}func main() {intchan := make(chan int ,10)wg.Add(2)go writeData(intchan)//go readData(intchan)wg.Wait()}
但是这里面wg.Add(2)主从协程我没明白。我起一个的时候是不会阻塞的,起两个会。跟容量就没关系,只要不读就会阻塞。
读写频率不同,也是可以,有读就不会阻塞
更多推荐
golang的管道阻塞问题
发布评论