package main
import (
"fmt"
"sync"
//"time"
)
var wg sync.WaitGroup
func writeData(intchan chan int){
defer wg.Done()
for i := 1; i <= 9; i++ {
intchan<-i
fmt.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 main
import (
"fmt"
"sync"
//"time"
)
var wg sync.WaitGroup
func writeData(intchan chan int){
defer wg.Done()
for i := 1; i <= 10; i++ {
intchan<-i
fmt.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)主从协程我没明白。我起一个的时候是不会阻塞的,起两个会。跟容量就没关系,只要不读就会阻塞。
读写频率不同,也是可以,有读就不会阻塞